mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-20 21:38:14 +00:00
git-subtree-dir: packages/tools git-subtree-split: 78317b9c127f18bd040c1d77e3c0840cdc9a5b38
62 lines
3.1 KiB
Markdown
62 lines
3.1 KiB
Markdown
# 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:
|
|
|
|
```shell
|
|
uv pip install 'crewai[tools]'
|
|
```
|
|
|
|
## Setup
|
|
Before instantiating the tool, you need a Couchbase cluster.
|
|
- Create a cluster on [Couchbase Capella](https://docs.couchbase.com/cloud/get-started/create-account.html), Couchbase's cloud database solution.
|
|
- Create a [local Couchbase server](https://docs.couchbase.com/server/current/getting-started/start-here.html).
|
|
|
|
You will need to create a bucket, scope and collection on the cluster. Then, [follow this guide](https://docs.couchbase.com/python-sdk/current/hello-world/start-using-sdk.html) 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.](https://docs.couchbase.com/cloud/vector-search/create-vector-search-index-ui.html)
|
|
- [Create a vector search index on your local Couchbase server.](https://docs.couchbase.com/server/current/vector-search/create-vector-search-index-ui.html)
|
|
|
|
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:
|
|
|
|
```python
|
|
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 Couchbase `Cluster` instance.
|
|
- `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) |