git-subtree-dir: packages/tools git-subtree-split: 78317b9c127f18bd040c1d77e3c0840cdc9a5b38
CouchbaseFTSVectorSearchTool
Description
Couchbase is a NoSQL database with vector search capabilities. Users can store and query vector embeddings. You can learn more about Couchbase vector search here: https://docs.couchbase.com/cloud/vector-search/vector-search.html
This tool is specifically crafted for performing semantic search using Couchbase. Use this tool to find semantically similar docs to a given query.
Installation
Install the crewai_tools package by executing the following command in your terminal:
uv pip install 'crewai[tools]'
Setup
Before instantiating the tool, you need a Couchbase cluster.
- Create a cluster on Couchbase Capella, Couchbase's cloud database solution.
- Create a local Couchbase server.
You will need to create a bucket, scope and collection on the cluster. Then, follow this guide to create a Couchbase Cluster object and load documents into your collection.
Follow the docs below to create a vector search index on Couchbase.
- Create a vector search index on Couchbase Capella.
- Create a vector search index on your local Couchbase server.
Ensure that the Dimension field in the index matches the embedding model. For example, OpenAI's text-embedding-3-small model has an embedding dimension of 1536 dimensions, and so the Dimension field must be 1536 in the index.
Example
To utilize the CouchbaseFTSVectorSearchTool for different use cases, follow these examples:
from crewai_tools import CouchbaseFTSVectorSearchTool
# Instantiate a Couchbase Cluster object from the Couchbase SDK
tool = CouchbaseFTSVectorSearchTool(
cluster=cluster,
collection_name="collection",
scope_name="scope",
bucket_name="bucket",
index_name="index",
embedding_function=embed_fn
)
# 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 CouchbaseFTSVectorSearchTool.",
llm="gpt-4o-mini",
tools=[tool],
)
Arguments
cluster: An initialized CouchbaseClusterinstance.bucket_name: The name of the Couchbase bucket.scope_name: The name of the scope within the bucket.collection_name: The name of the collection within the scope.index_name: The name of the search index (vector index).embedding_function: A function that takes a string and returns its embedding (list of floats).embedding_key: Name of the field in the search index storing the vector. (Optional, defaults to 'embedding')scoped_index: Whether the index is scoped (True) or cluster-level (False). (Optional, defaults to True)limit: The maximum number of search results to return. (Optional, defaults to 3)