Busca Vetorial Weaviate
Visão Geral
Seção intitulada “Visão Geral”O WeaviateVectorSearchTool foi especificamente desenvolvido para realizar buscas semânticas em documentos armazenados em um banco de dados vetorial Weaviate. Essa ferramenta permite encontrar documentos semanticamente similares a uma determinada consulta, aproveitando o poder das embeddings vetoriais para resultados de busca mais precisos e contextualmente relevantes.
Weaviate é um banco de dados vetorial que armazena e consulta embeddings vetoriais, possibilitando recursos de busca semântica.
Instalação
Seção intitulada “Instalação”Para incorporar esta ferramenta ao seu projeto, é necessário instalar o cliente Weaviate:
uv add weaviate-clientEtapas para Começar
Seção intitulada “Etapas para Começar”Para utilizar efetivamente o WeaviateVectorSearchTool, siga as etapas abaixo:
- Instalação dos Pacotes: Confirme que os pacotes
crewai[tools]eweaviate-clientestão instalados em seu ambiente Python. - Configuração do Weaviate: Configure um cluster Weaviate. Você pode seguir as instruções na documentação do Weaviate.
- Chaves de API: Obtenha a URL do seu cluster Weaviate e a chave de API correspondente.
- Chave de API da OpenAI: Certifique-se de que você tenha uma chave de API da OpenAI definida nas variáveis de ambiente como
OPENAI_API_KEY.
Exemplo
Seção intitulada “Exemplo”O exemplo a seguir demonstra como inicializar a ferramenta e executar uma busca:
from crewai_tools import WeaviateVectorSearchTool
# Inicializar a ferramentatool = WeaviateVectorSearchTool( collection_name='example_collections', limit=3, weaviate_cluster_url="https://your-weaviate-cluster-url.com", weaviate_api_key="your-weaviate-api-key",)
@agentdef search_agent(self) -> Agent: ''' Este agente utiliza o WeaviateVectorSearchTool para buscar documentos semanticamente similares em um banco de dados vetorial Weaviate. ''' return Agent( config=self.agents_config["search_agent"], tools=[tool] )Parâmetros
Seção intitulada “Parâmetros”O WeaviateVectorSearchTool aceita os seguintes parâmetros:
- collection_name: Obrigatório. O nome da coleção a ser pesquisada.
- weaviate_cluster_url: Obrigatório. A URL do cluster Weaviate.
- weaviate_api_key: Obrigatório. A chave de API para o cluster Weaviate.
- limit: Opcional. O número de resultados a serem retornados. O padrão é
3. - vectorizer: Opcional. O vetorizador a ser utilizado. Se não for informado, será utilizado o
text2vec_openaicom o modelonomic-embed-text. - generative_model: Opcional. O modelo generativo a ser utilizado. Se não for informado, será utilizado o
gpt-4oda OpenAI.
Configuração Avançada
Seção intitulada “Configuração Avançada”Você pode personalizar o vetorizador e o modelo generativo utilizados pela ferramenta:
from crewai_tools import WeaviateVectorSearchToolfrom weaviate.classes.config import Configure
# Configurar modelo personalizado para vetorizador e modelo generativotool = WeaviateVectorSearchTool( collection_name='example_collections', limit=3, vectorizer=Configure.Vectorizer.text2vec_openai(model="nomic-embed-text"), generative_model=Configure.Generative.openai(model="gpt-4o-mini"), weaviate_cluster_url="https://your-weaviate-cluster-url.com", weaviate_api_key="your-weaviate-api-key",)Pré-carregando Documentos
Seção intitulada “Pré-carregando Documentos”Você pode pré-carregar seu banco de dados Weaviate com documentos antes de utilizar a ferramenta:
import osfrom crewai_tools import WeaviateVectorSearchToolimport weaviatefrom weaviate.classes.init import Auth
# Conectar ao Weaviateclient = weaviate.connect_to_weaviate_cloud( cluster_url="https://your-weaviate-cluster-url.com", auth_credentials=Auth.api_key("your-weaviate-api-key"), headers={"X-OpenAI-Api-Key": "your-openai-api-key"})
# Obter ou criar coleçãotest_docs = client.collections.get("example_collections")if not test_docs: test_docs = client.collections.create( name="example_collections", vectorizer_config=Configure.Vectorizer.text2vec_openai(model="nomic-embed-text"), generative_config=Configure.Generative.openai(model="gpt-4o"), )
# Carregar documentosdocs_to_load = os.listdir("knowledge")with test_docs.batch.dynamic() as batch: for d in docs_to_load: with open(os.path.join("knowledge", d), "r") as f: content = f.read() batch.add_object( { "content": content, "year": d.split("_")[0], } )
# Inicializar a ferramentatool = WeaviateVectorSearchTool( collection_name='example_collections', limit=3, weaviate_cluster_url="https://your-weaviate-cluster-url.com", weaviate_api_key="your-weaviate-api-key",)Exemplo de Integração com Agente
Seção intitulada “Exemplo de Integração com Agente”Veja como integrar o WeaviateVectorSearchTool com um agente CrewAI:
from crewai import Agentfrom crewai_tools import WeaviateVectorSearchTool
# Inicializar a ferramentaweaviate_tool = WeaviateVectorSearchTool( collection_name='example_collections', limit=3, weaviate_cluster_url="https://your-weaviate-cluster-url.com", weaviate_api_key="your-weaviate-api-key",)
# Criar um agente com a ferramentarag_agent = Agent( name="rag_agent", role="Você é um assistente útil que pode responder perguntas com a ajuda do WeaviateVectorSearchTool.", llm="gpt-4o-mini", tools=[weaviate_tool],)Conclusão
Seção intitulada “Conclusão”O WeaviateVectorSearchTool fornece uma maneira poderosa de buscar documentos semanticamente similares em um banco de dados vetorial Weaviate. Ao utilizar embeddings vetoriais, ele permite resultados de busca mais precisos e relevantes em termos de contexto, quando comparado a buscas tradicionais baseadas em palavras-chave. Essa ferramenta é especialmente útil para aplicações que precisam encontrar informações a partir do significado e não apenas de correspondências exatas.