Converse com os seus documentos
A partir de um documento, pode fazer perguntas à IA sobre ele, como se fosse uma conversa.
+4
graph TD
%%{init: {'theme': 'mc','layout': 'elk'}}%%
ChatOutput-s3yx9[<div><img src="/_astro/messages-square.BaSDmT6g.svg" style="height: 20px !important;width: 20px !important"/></div>Chat Output]
style ChatOutput-s3yx9 stroke:#a170ff
ChatInput-nbeu2[<div><img src="/_astro/messages-square.BaSDmT6g.svg" style="height: 20px !important;width: 20px !important"/></div>Pregunta]
style ChatInput-nbeu2 stroke:#a170ff
GDriveFilesComponent-ield1[<div><img src="/_astro/google_drive.wKmDsV2c.svg" style="height: 20px !important;width: 20px !important"/></div>Obtener documento]
style GDriveFilesComponent-ield1 stroke:#a170ff
Prompt-bqb7h[<div><img src="/_astro/square-terminal.BMOXc-nZ.svg" style="height: 20px !important;width: 20px !important"/></div>Instrucciones]
style Prompt-bqb7h stroke:#a170ff
ParseData-u86r4[<div><img src="/_astro/braces.Djq0PW4_.svg" style="height: 20px !important;width: 20px !important"/></div>Obtener texto]
style ParseData-u86r4 stroke:#a170ff
Chroma-rr0og[<div><img src="/_astro/chroma.CDTUBZSx.svg" style="height: 20px !important;width: 20px !important"/></div>Subir a DB]
style Chroma-rr0og stroke:#a170ff
OpenAIEmbeddings-8lgaa[<div><img src="/_astro/openAI.BhmuxEs3.svg" style="height: 20px !important;width: 20px !important"/></div>OpenAI Embeddings]
style OpenAIEmbeddings-8lgaa stroke:#a170ff
LanguageRecursiveTextSplitter-60k4u[Separador de texto]
style LanguageRecursiveTextSplitter-60k4u stroke:#a170ff
Chroma-v9w2i[<div><img src="/_astro/chroma.CDTUBZSx.svg" style="height: 20px !important;width: 20px !important"/></div>Obtener de DB]
style Chroma-v9w2i stroke:#a170ff
OpenAIEmbeddings-3cp2j[<div><img src="/_astro/openAI.BhmuxEs3.svg" style="height: 20px !important;width: 20px !important"/></div>OpenAI Embeddings2]
style OpenAIEmbeddings-3cp2j stroke:#a170ff
OpenAIModel-h9hjf[<div><img src="/_astro/openAI.BhmuxEs3.svg" style="height: 20px !important;width: 20px !important"/></div>OpenAI]
style OpenAIModel-h9hjf stroke:#a170ff
ParseData-u86r4 -.- Prompt-bqb7h
linkStyle 0 stroke:#a170ff
ChatInput-nbeu2 -.- Prompt-bqb7h
linkStyle 1 stroke:#a170ff
GDriveFilesComponent-ield1 -.- LanguageRecursiveTextSplitter-60k4u
linkStyle 2 stroke:#a170ff
LanguageRecursiveTextSplitter-60k4u -.- Chroma-rr0og
linkStyle 3 stroke:#a170ff
OpenAIEmbeddings-8lgaa -.- Chroma-rr0og
linkStyle 4 stroke:#a170ff
Chroma-v9w2i -.- ParseData-u86r4
linkStyle 5 stroke:#a170ff
OpenAIEmbeddings-3cp2j -.- Chroma-v9w2i
linkStyle 6 stroke:#a170ff
Prompt-bqb7h -.- OpenAIModel-h9hjf
linkStyle 7 stroke:#a170ff
OpenAIModel-h9hjf -.- ChatOutput-s3yx9
linkStyle 8 stroke:#a170ff
Chat com Seus Documentos
🧩 Visão Geral
Este fluxo permite que o usuário faça perguntas em linguagem natural sobre documentos armazenados no Google Drive.
O sistema recupera automaticamente o documento relevante, divide e gera embeddings do texto, armazena os embeddings em um banco de dados vetorial e utiliza um modelo de linguagem da OpenAI para responder à pergunta de forma conversacional.
O resultado é apresentado como uma mensagem de chat, oferecendo uma experiência de Q&A contínua e alimentada por IA sobre documentos existentes.
⚙️ Funcionalidades Principais
- Recuperação de documentos do Google Drive utilizando um arquivo selecionado pelo usuário.
- Divisão de texto respeitando a estrutura linguística e evitando quebrar sentenças.
- Geração de embeddings com modelos OpenAI para indexação semântica.
- Integração com banco vetorial (Chroma) para busca rápida por similaridade.
- Construção dinâmica de prompts que insere trechos relevantes do documento.
- Geração de respostas LLM via OpenAI, produzindo respostas em linguagem natural.
- Saída em estilo chat que exibe a resposta como mensagem no playground.
🔄 Etapas do Fluxo
| Nome do Componente | Papel no Fluxo | Entradas Principais | Saídas Principais |
|---|---|---|---|
| Chat Input | Captura a pergunta do usuário. | Texto da pergunta. | Mensagem contendo a pergunta. |
| Google Drive File Retrieval | Carrega o documento selecionado do Drive. | ID ou seleção do arquivo. | Dados brutos do documento (binário/texto). |
| Text Splitter | Divide o documento em trechos que respeitam a linguagem. | Dados brutos do documento. | Lista de trechos de texto. |
| OpenAI Embeddings | Converte os trechos de texto em vetores densos. | Lista de trechos de texto. | Vetor de embeddings para cada trecho. |
| Chroma Vector Store (Add) | Armazena embeddings para futuras consultas. | Vetor de embeddings. | Entrada persistida no banco vetorial. |
| Chroma Vector Store (Search) | Recupera os trechos mais relevantes para a pergunta do usuário. | Pergunta do usuário, banco vetorial. | Subconjunto de trechos do documento (excerto relevante). |
| Parse Data | Converte os trechos recuperados em texto simples. | Trechos relevantes do documento. | Texto concatenado do excerto. |
| Prompt Builder | Cria um prompt que inclui o excerto e a pergunta. | Texto extraído, pergunta do usuário. | Prompt pronto para o LLM. |
| OpenAI Model | Gera a resposta baseada no prompt. | Prompt. | Resposta em texto gerada. |
| Chat Output | Exibe a resposta no playground como mensagem de chat. | Texto gerado. | Mensagem de chat mostrada ao usuário. |
🧠 Observações
- O fluxo requer credenciais válidas do Google Drive e chave de API da OpenAI.
- O banco vetorial persiste dados no diretório
chat_wiht_documents; verifique se o caminho é gravável. - Apenas os 100 documentos mais recentes são indexados no modo “Todos os arquivos do Drive” para evitar exceder limites da API.
- A operação de embeddings é limitada a 10.000 tokens por requisição, respeitando as restrições da OpenAI.
- A busca por similaridade utiliza um limiar de similaridade cosseno de 0,1; pode ser ajustado para correspondência mais estrita ou flexível.
- O modelo padrão da OpenAI é
gpt‑4.1; usuários podem trocar pelo parâmetromodel_name, o que pode impactar limites de tokens e custo. - Todos os componentes operam em modo batch sempre que possível, melhorando o desempenho em documentos grandes.