mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-22 22:58:13 +00:00
git-subtree-dir: packages/tools git-subtree-split: 78317b9c127f18bd040c1d77e3c0840cdc9a5b38
81 lines
2.7 KiB
Markdown
81 lines
2.7 KiB
Markdown
# 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:
|
|
|
|
```shell
|
|
uv pip install 'crewai[tools]'
|
|
```
|
|
|
|
## Example
|
|
To utilize the WeaviateVectorSearchTool for different use cases, follow these examples:
|
|
|
|
```python
|
|
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:
|
|
|
|
```python
|
|
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)
|
|
|
|
```
|