Entrar ou criar conta

ULC Lab · implementação reproduzível

Laboratório: Chatbot de Perguntas e Respostas sobre Documentos Locais com LangChain e Milvus

Você vai implementar um fluxo de perguntas e respostas sobre documentos PDF usando LangChain, modelos de linguagem abertos e Milvus como banco vetorial. Em cerca de 2 horas, terá um chatbot funcional consultando PDFs locais.

LangChain do zero à integração corporativa
Ligado ao treinamento LangChain do zero à integração corporativa
ULC-LAB-IA-0004 · Status de validaçãoNão validado pela Upnetix: roteiro derivado da documentação oficial, para você executar e validar
Duração estimada
120 min
Passos
12
Validações
5
Versões da documentação consultada
LangChain v0.1.16 · Milvus 2.3.x · Hugging Face Transformers a versão estável atual · Sentence Transformers a versão estável atual · PyPDF2 a versão estável atual
Objetivo

Demonstrar como integrar LangChain com um modelo de linguagem aberto (por exemplo, Hugging Face Transformers) e Milvus para criar um sistema de perguntas e respostas sobre documentos corporativos. O laboratório cobre desde a preparação do ambiente até a consulta de PDFs via chat, simulando um cenário real de integração em sistemas empresariais.

Topologia

Uma máquina virtual Ubuntu 22.04 (10.0.0.10) roda Milvus (banco vetorial) e um backend Python com LangChain. O backend carrega documentos PDF, gera embeddings usando Sentence Transformers e armazena no Milvus. Usuário interage via terminal local, enviando perguntas respondidas pelo modelo consultando os vetores.

Usuário (CLI)
    |
    v
[Python+LangChain] (10.0.0.10)
    |
    v
 [Milvus]
    ^
    |
 [PDFs locais]

Equipamentos e software

ItemRequisito, licença ou versão
VM Ubuntu 22.042 vCPU, 4GB RAM, 15GB disco, portas 19530 e 8000 abertas
PC localAcesso SSH à VM
LangChainMIT · v0.1.16
MilvusApache 2.0 · 2.3.x
Hugging Face TransformersApache 2.0 · a versão estável atual
Sentence TransformersApache 2.0 · a versão estável atual
PyPDF2BSD · a versão estável atual

Roteiro

  1. Preparar a VM Ubuntu

    Atualize o sistema e instale dependências básicas. Isso garante ambiente limpo e atualizado.

    sudo apt update && sudo apt upgrade -y
    sudo apt install python3 python3-pip git curl -y

    O que você deve ver: Sistema atualizado, Python 3 e pip instalados.

  2. Instalar e iniciar o Milvus Standalone

    Milvus será o banco vetorial. Usaremos o modo standalone para facilitar o laboratório.

    curl -fsSL https://milvus.io/install.sh | bash
    cd milvus-standalone && docker compose up -d

    O que você deve ver: Containers do Milvus rodando. Porta 19530 aberta.

  3. Clonar repositório de exemplo

    Crie um diretório de trabalho e baixe um repositório de exemplo para facilitar o setup.

    git clone https://github.com/langchain-ai/langchain.git
    cd langchain/examples/milvus

    O que você deve ver: Diretório com exemplos LangChain + Milvus disponível.

  4. Instalar dependências Python

    Instale as bibliotecas necessárias para LangChain, Milvus, Sentence Transformers e leitura de PDF.

    pip3 install langchain pymilvus sentence-transformers transformers pypdf2

    O que você deve ver: Pacotes instalados sem erros.

  5. Obter documentos PDF de teste

    Baixe ou crie 2 PDFs simples para indexação. Use textos técnicos ou manuais.

    curl -o doc1.pdf https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf
    curl -o doc2.pdf https://www.adobe.com/support/products/enterprise/knowledgecenter/media/c4611_sample_explain.pdf

    O que você deve ver: Dois arquivos PDF no diretório de trabalho.

  6. Carregar e particionar PDFs

    Use PyPDF2 para ler os PDFs e dividir em chunks menores. Isso facilita a indexação vetorial.

    python3
    >>> from PyPDF2 import PdfReader
    >>> reader = PdfReader('doc1.pdf')
    >>> text = ''
    >>> for page in reader.pages:
    ...     text += page.extract_text()
    >>> print(text[:200])
    (exit com Ctrl+D)

    O que você deve ver: Texto extraído do PDF exibido no terminal.

  7. Gerar embeddings dos textos

    Use Sentence Transformers para transformar os chunks de texto em vetores.

    python3
    >>> from sentence_transformers import SentenceTransformer
    >>> model = SentenceTransformer('all-MiniLM-L6-v2')
    >>> embeddings = model.encode([text])
    >>> print(embeddings.shape)
    (exit com Ctrl+D)

    O que você deve ver: Shape dos embeddings exibido, por exemplo (1, 384).

  8. Configurar conexão LangChain com Milvus

    Configure o LangChain para usar Milvus como backend vetorial. Isso conecta o pipeline de IA ao banco.

    python3
    >>> from langchain.vectorstores import Milvus
    >>> vector_db = Milvus(collection_name='docs', connection_args={'host': '127.0.0.1', 'port': '19530'})
    (exit com Ctrl+D)

    O que você deve ver: Objeto vector_db criado sem erros.

  9. Indexar embeddings no Milvus

    Armazene os vetores dos textos no Milvus. Isso permite consultas semânticas rápidas.

    python3
    >>> vector_db.add_texts([text], embeddings=[embeddings[0]])
    (exit com Ctrl+D)

    O que você deve ver: Vetores indexados, sem mensagens de erro.

  10. Configurar pipeline de perguntas e respostas

    Monte um pipeline LangChain que recebe uma pergunta, consulta Milvus e responde usando o modelo de linguagem.

    python3
    >>> from langchain.chains import RetrievalQA
    >>> from langchain.llms import HuggingFacePipeline
    >>> llm = HuggingFacePipeline.from_model_id('distilbert-base-uncased-distilled-squad')
    >>> qa = RetrievalQA.from_chain_type(llm=llm, retriever=vector_db.as_retriever())
    (exit com Ctrl+D)

    O que você deve ver: Pipeline qa criado sem erros.

  11. Testar perguntas via terminal

    Envie perguntas sobre o conteúdo dos PDFs e observe as respostas do modelo.

    python3
    >>> question = 'Sobre o que trata o documento?'
    >>> print(qa.run(question))
    (exit com Ctrl+D)

    O que você deve ver: Resposta relevante ao conteúdo do PDF exibida.

  12. Automatizar o fluxo em script

    Junte tudo em um script Python único para facilitar execuções futuras.

    Consulte a documentação para exemplos de script completo: https://python.langchain.com/docs/integrations/vectorstores/milvus

    O que você deve ver: Script funcional, aceitando perguntas e respondendo via terminal.

Como saber que funcionou

TesteComandoCritério
Verificar se Milvus está rodandodocker ps | grep milvusContainer milvus-standalone em estado 'Up'
Conferir conexão LangChain-Milvuspython3 -c "from langchain.vectorstores import Milvus; Milvus(collection_name='docs', connection_args={'host': '127.0.0.1', 'port': '19530'})"Sem mensagem de erro
Checar se embeddings foram salvosConsulte a documentação Milvus para listar coleções: https://milvus.io/docs/manage_collections.mdColeção 'docs' existente e com registros
Receber resposta relevante do chatbotpython3 >>> print(qa.run('Qual o objetivo do documento?'))Resposta coerente ao conteúdo do PDF
Rodar script de ponta a pontapython3 seu_script.pyScript inicia, aceita perguntas e responde sem erro

Troubleshooting

SintomaCausa provávelCorreção
Erro de conexão ao MilvusPorta 19530 bloqueada ou container não iniciadoVerifique firewall e status do container com 'docker ps'
ImportError ao rodar scripts PythonBibliotecas não instaladas ou ambiente erradoReinstale dependências com 'pip3 install ...'
Respostas vazias ou irrelevantesEmbeddings não gerados corretamente ou textos mal particionadosRevise extração de texto e geração de embeddings
Script trava ao carregar modeloPouca RAM ou modelo muito grandeUse modelo menor ou aumente recursos da VM

Segurança e hardening

  • Nunca exponha a porta 19530 do Milvus para a internet sem autenticação
  • Remova PDFs sensíveis após testes
  • Limite permissões de arquivos e scripts
  • Use ambientes virtuais Python para evitar conflitos de dependências

Checklist final

Referências

  1. LangChain: Integração com Milvus · LangChain (python.langchain.com)
  2. Documentação oficial Milvus · Milvus (milvus.io)
Verificação editorial
Publicado
09/09/2026
Última revisão
09/09/2026
Versão do conteúdo
1.0
Referências
2 oficiais
Revisão técnica
redação e revisão por IA, URLs conferidas na publicação
Status
Atual
Encontrou um erro? Escreva para comercial@upnetix.com.br com o endereço da página. A revisão semestral por IA nunca altera comandos ou configurações sem passar pela fila de revisão.