mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-13 18:18:29 +00:00
git-subtree-dir: packages/tools git-subtree-split: 78317b9c127f18bd040c1d77e3c0840cdc9a5b38
MongoDBVectorSearchTool
Description
This tool is specifically crafted for conducting vector searches within docs within a MongoDB database. Use this tool to find semantically similar docs to a given query.
MongoDB can act as a vector database that is used to store and query vector embeddings. You can follow the docs here: https://www.mongodb.com/docs/atlas/atlas-vector-search/vector-search-overview/
Installation
Install the crewai_tools package with MongoDB support by executing the following command in your terminal:
pip install crewai-tools[mongodb]
or
uv add crewai-tools --extra mongodb
Example
To utilize the MongoDBVectorSearchTool for different use cases, follow these examples:
from crewai_tools import MongoDBVectorSearchTool
# To enable the tool to search any website the agent comes across or learns about during its operation
tool = MongoDBVectorSearchTool(
database_name="example_database',
collection_name='example_collections',
connection_string="<your_mongodb_connection_string>",
)
or
from crewai_tools import MongoDBVectorSearchConfig, MongoDBVectorSearchTool
# Setup custom embedding model and customize the parameters.
query_config = MongoDBVectorSearchConfig(limit=10, oversampling_factor=2)
tool = MongoDBVectorSearchTool(
database_name="example_database',
collection_name='example_collections',
connection_string="<your_mongodb_connection_string>",
query_config=query_config,
index_name="my_vector_index",
generative_model="gpt-4o-mini"
)
# 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 MongoDBVectorSearchTool.",
goal="...",
backstory="...",
llm="gpt-4o-mini",
tools=[tool],
)
Preloading the MongoDB database with documents:
from crewai_tools import MongoDBVectorSearchTool
# Generate the documents and add them to the MongoDB database
test_docs = client.collections.get("example_collections")
# Create the tool.
tool = MongoDBVectorSearchTool(
database_name="example_database',
collection_name='example_collections',
connection_string="<your_mongodb_connection_string>",
)
# Add the text from a set of CrewAI knowledge documents.
texts = []
for d in os.listdir("knowledge"):
with open(os.path.join("knowledge", d), "r") as f:
texts.append(f.read())
tool.add_texts(text)
# Create the vector search index (if it wasn't already created in Atlas).
tool.create_vector_search_index(dimensions=3072)