Files
crewAI/crewai_tools/tools/weaviate_tool
Greyson Lalonde e16606672a Squashed 'packages/tools/' content from commit 78317b9c
git-subtree-dir: packages/tools
git-subtree-split: 78317b9c127f18bd040c1d77e3c0840cdc9a5b38
2025-09-12 21:58:02 -04:00
..

WeaviateVectorSearchTool

Description

This tool is specifically crafted for conducting semantic searches within docs within a Weaviate vector database. Use this tool to find semantically similar docs to a given query.

Weaviate is a vector database that is used to store and query vector embeddings. You can follow their docs here: https://weaviate.io/developers/wcs/connect

Installation

Install the crewai_tools package by executing the following command in your terminal:

uv pip install 'crewai[tools]'

Example

To utilize the WeaviateVectorSearchTool for different use cases, follow these examples:

from crewai_tools import WeaviateVectorSearchTool

# To enable the tool to search any website the agent comes across or learns about during its operation
tool = WeaviateVectorSearchTool(
    collection_name='example_collections',
    limit=3,
    weaviate_cluster_url="https://your-weaviate-cluster-url.com",
    weaviate_api_key="your-weaviate-api-key",
)

# or 

# Setup custom model for vectorizer and generative model
tool = 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",
)

# Adding the tool to an agent
rag_agent = Agent(
    name="rag_agent",
    role="You are a helpful assistant that can answer questions with the help of the WeaviateVectorSearchTool.",
    llm="gpt-4o-mini",
    tools=[tool],
)

Arguments

  • collection_name : The name of the collection to search within. (Required)
  • weaviate_cluster_url : The URL of the Weaviate cluster. (Required)
  • weaviate_api_key : The API key for the Weaviate cluster. (Required)
  • limit : The number of results to return. (Optional)
  • vectorizer : The vectorizer to use. (Optional)
  • generative_model : The generative model to use. (Optional)

Preloading the Weaviate database with documents:

from crewai_tools import WeaviateVectorSearchTool

# Use before hooks to generate the documents and add them to the Weaviate database. Follow the weaviate docs: https://weaviate.io/developers/wcs/connect
test_docs = client.collections.get("example_collections")


docs_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],
            }
        )
tool = WeaviateVectorSearchTool(collection_name='example_collections', limit=3)