~/questoes/agentes-de-ia
Bancos de dados vetoriais armazenam representações numéricas (embeddings) de textos e permitem buscar documentos por similaridade semântica, não por correspondência exata de palavras. O LangChain oferece métodos padronizados para acessar esses bancos, sendo o `.similarity_search()` o principal para encontrar documentos relevantes.
O método `.similarity_search()` é correto porque usa a distância entre vetores para encontrar documentos semanticamente similares. Ele retorna resultados ordenados por relevância, capturando o significado dos textos mesmo quando as palavras são diferentes. Isso é muito mais poderoso que buscar palavras-chave exatas.
O `.keyword_search()` não existe no LangChain. Buscar por índices tradicionais de palavras-chave é a abordagem antiga, que não funciona bem com bancos vetoriais. Essa alternativa mistura dois conceitos diferentes.
O `.similarity_search()` é o método correto do LangChain para recuperar documentos de um banco vetorial. Ele calcula a similaridade entre o vetor da sua consulta e os vetores armazenados, retornando os documentos mais relevantes ordenados por pontuação de similaridade.
O `.retrieve_by_id()` não é o método apropriado para buscas semânticas. Essa função (se existisse) seria útil apenas se você já soubesse o identificador exato do documento, mas o objetivo da busca vetorial é encontrar documentos relevantes sem saber seus IDs.
O `.find_exact_match()` não existe e representa justamente o oposto do que bancos vetoriais fazem. Eles foram criados para evitar a necessidade de correspondência exata de palavras, permitindo encontrar variações semânticas e sinônimos.