MongoDB Vector Search Tool

no
Summary: The 'MongoDBVectorSearchTool' performs vector search on MongoDB Atlas with optional indexing helpers.

Original Documentation

Documentation Index#

Fetch the complete documentation index at: https://docs.crewai.com/llms.txt Use this file to discover all available pages before exploring further.

The MongoDBVectorSearchTool performs vector search on MongoDB Atlas with optional indexing helpers.

MongoDBVectorSearchTool#

Description#

Perform vector similarity queries on MongoDB Atlas collections. Supports index creation helpers and bulk insert of embedded texts.

MongoDB Atlas supports native vector search. Learn more: https://www.mongodb.com/docs/atlas/atlas-vector-search/vector-search-overview/

Installation#

Install with the MongoDB extra:

pip install crewai-tools[mongodb]

or

uv add crewai-tools --extra mongodb

Parameters#

Initialization#

  • connection_string (str, required)
  • database_name (str, required)
  • collection_name (str, required)
  • vector_index_name (str, default vector_index)
  • text_key (str, default text)
  • embedding_key (str, default embedding)
  • dimensions (int, default 1536)

Run Parameters#

  • query (str, required): Natural language query to embed and search.

Quick start#

from crewai_tools import MongoDBVectorSearchTool

tool = MongoDBVectorSearchTool(
  connection_string="mongodb+srv://...",
  database_name="mydb",
  collection_name="docs",
)

print(tool.run(query="how to create vector index"))

Index creation helpers#

Use create_vector_search_index(...) to provision an Atlas Vector Search index with the correct dimensions and similarity.

Common issues#

  • Authentication failures: ensure your Atlas IP Access List allows your runner and the connection string includes credentials.
  • Index not found: create the vector index first; name must match vector_index_name.
  • Dimensions mismatch: align embedding model dimensions with dimensions.

More examples#

Basic initialization#

from crewai_tools import MongoDBVectorSearchTool

tool = MongoDBVectorSearchTool(
    database_name="example_database",
    collection_name="example_collection",
    connection_string="<your_mongodb_connection_string>",
)

Custom query configuration#

from crewai_tools import MongoDBVectorSearchConfig, MongoDBVectorSearchTool

query_config = MongoDBVectorSearchConfig(limit=10, oversampling_factor=2)
tool = MongoDBVectorSearchTool(
    database_name="example_database",
    collection_name="example_collection",
    connection_string="<your_mongodb_connection_string>",
    query_config=query_config,
    vector_index_name="my_vector_index",
)

rag_agent = Agent(
    name="rag_agent",
    role="You are a helpful assistant that can answer questions with the help of the MongoDBVectorSearchTool.",
    goal="...",
    backstory="...",
    tools=[tool],
)

Preloading the database and creating the index#

import os
from crewai_tools import MongoDBVectorSearchTool

tool = MongoDBVectorSearchTool(
    database_name="example_database",
    collection_name="example_collection",
    connection_string="<your_mongodb_connection_string>",
)

# Load text content from a local folder and add to MongoDB
texts = []
for fname in os.listdir("knowledge"):
    path = os.path.join("knowledge", fname)
    if os.path.isfile(path):
        with open(path, "r", encoding="utf-8") as f:
            texts.append(f.read())

tool.add_texts(texts)

# Create the Atlas Vector Search index (e.g., 3072 dims for text-embedding-3-large)
tool.create_vector_search_index(dimensions=3072)

Example#

from crewai import Agent, Task, Crew
from crewai_tools import MongoDBVectorSearchTool

tool = MongoDBVectorSearchTool(
    connection_string="mongodb+srv://...",
    database_name="mydb",
    collection_name="docs",
)

agent = Agent(
    role="RAG Agent",
    goal="Answer using MongoDB vector search",
    backstory="Knowledge retrieval specialist",
    tools=[tool],
    verbose=True,
)

task = Task(
    description="Find relevant content for 'indexing guidance'",
    expected_output="A concise answer citing the most relevant matches",
    agent=agent,
)

crew = Crew(
    agents=[agent], 
    tasks=[task],
    verbose=True,
)

result = crew.kickoff()
Link last verified June 7, 2026. View original ↗
Source: CrewAI Docs
Link last verified: 2026-03-04