# 引言
在现代应用程序开发中,快速而准确的数据检索是至关重要的。Couchbase作为一款获得大奖的分布式NoSQL数据库,提供了Vector Search功能,使得开发者可以通过矢量搜索技术更高效地检索数据。本文将详细讲解如何在Couchbase中使用Vector Search,包括从设置、连接到高级的查询操作。无论你是使用Couchbase Capella还是自托管的Couchbase Server,这篇文章都将为你提供实用的指导。
# 主要内容
## 设置环境
首先,我们需要安装`langchain-couchbase`包以访问CouchbaseVectorStore。使用以下命令安装该包:
```bash
pip install -qU langchain-couchbase
配置凭证
在使用Couchbase服务之前,你需要在Couchbase网站上创建一个新连接,并保存数据库的用户名和密码:
import getpass
COUCHBASE_CONNECTION_STRING = getpass.getpass(
"Enter the connection string for the Couchbase cluster: "
)
DB_USERNAME = getpass.getpass("Enter the username for the Couchbase cluster: ")
DB_PASSWORD = getpass.getpass("Enter the password for the Couchbase cluster: ")
初始化连接
创建并初始化Couchbase连接对象:
from datetime import timedelta
from couchbase.auth import PasswordAuthenticator
from couchbase.cluster import Cluster
from couchbase.options import ClusterOptions
auth = PasswordAuthenticator(DB_USERNAME, DB_PASSWORD)
options = ClusterOptions(auth)
cluster = Cluster(COUCHBASE_CONNECTION_STRING, options)
cluster.wait_until_ready(timedelta(seconds=5))
设置Bucket和Collection
设置要使用的Couchbase的Bucket、Scope和Collection名称:
BUCKET_NAME = "langchain_bucket"
SCOPE_NAME = "_default"
COLLECTION_NAME = "default"
SEARCH_INDEX_NAME = "langchain-test-index"
实例化Vector Store
from langchain_couchbase.vectorstores import CouchbaseVectorStore
from langchain_huggingface import HuggingFaceEmbeddings
embeddings = HuggingFaceEmbeddings(model="sentence-transformers/all-mpnet-base-v2")
vector_store = CouchbaseVectorStore(
cluster=cluster,
bucket_name=BUCKET_NAME,
scope_name=SCOPE_NAME,
collection_name=COLLECTION_NAME,
embedding=embeddings,
index_name=SEARCH_INDEX_NAME,
)
代码示例
向Vector Store中添加文档并进行相似性搜索的完整代码示例:
from langchain_core.documents import Document
from uuid import uuid4
documents = [
Document(page_content="Couchbase is a NoSQL database that scales easily.", metadata={"source": "article"}),
Document(page_content="Vector search helps in finding similar documents.", metadata={"source": "tutorial"}),
]
uuids = [str(uuid4()) for _ in documents]
vector_store.add_documents(documents=documents, ids=uuids)
# 执行相似性搜索
results = vector_store.similarity_search(
"What is Couchbase?",
k=2
)
for res in results:
print(f"* {res.page_content} [{res.metadata}]")
常见问题和解决方案
问题1:创建CouchbaseVectorStore对象前是否需要创建搜索索引?
是的,在创建CouchbaseVectorStore对象之前,需要先创建搜索索引。
问题2:为什么在搜索结果中看不到指定的字段?
请确保要访问的字段在搜索索引中被存储。如果需要动态字段支持,参考Couchbase文档进行配置。
总结和进一步学习资源
Couchbase的Vector Search提供了强大的数据检索功能,通过本文的教程,相信你已掌握了如何设置和使用这一工具。欲了解更多详细信息和高级用法,请参考以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---