引言
在现代应用开发中,数据的高效存储和检索至关重要。Couchbase作为分布式NoSQL数据库,以其卓越的性能、扩展性和多功能性,成为开发者的首选。特别地,Couchbase的向量搜索功能,通过增强文本搜索服务,帮助开发者在AI、云、移动和边缘计算应用中实现更智能的查询。
本教程将介绍如何在Couchbase中实现向量搜索,无论是通过Couchbase Capella还是自我管理的Couchbase服务器。
主要内容
环境设置
安装依赖
首先,您需要安装langchain-couchbase
包:
pip install -qU langchain-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连接对象
使用用户名和密码创建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_NAME = "langchain_bucket"
SCOPE_NAME = "_default"
COLLECTION_NAME = "default"
SEARCH_INDEX_NAME = "langchain-test-index"
向量存储的简单实例化
from langchain_couchbase.vectorstores import CouchbaseVectorStore
from langchain_openai import OpenAIEmbeddings
embeddings = OpenAIEmbeddings(model="text-embedding-3-large")
vector_store = CouchbaseVectorStore(
cluster=cluster,
bucket_name=BUCKET_NAME,
scope_name=SCOPE_NAME,
collection_name=COLLECTION_NAME,
embedding=embeddings,
index_name=SEARCH_INDEX_NAME,
)
管理向量存储
添加项目
from uuid import uuid4
from langchain_core.documents import Document
document_1 = Document(page_content="I had chocolate chip pancakes for breakfast.", metadata={"source": "tweet"})
# 添加更多文档...
documents = [document_1, ...]
uuids = [str(uuid4()) for _ in range(len(documents))]
vector_store.add_documents(documents=documents, ids=uuids)
查询向量存储
进行相似性搜索:
results = vector_store.similarity_search("LangChain is easy to use.", k=2)
for res in results:
print(f"* {res.page_content} [{res.metadata}]")
常见问题和解决方案
问题1: 创建CouchbaseVectorStore对象前需要创建搜索索引吗?
是的,目前需要先创建搜索索引。
问题2: 搜索结果中缺少指定字段?
确保字段已在搜索索引中存储。可以在高级设置中选择“存储动态字段”。
总结和进一步学习资源
通过本教程,您可以在Couchbase中实施向量搜索,提升数据查询性能。如果您想深入了解,以下资源可能会对您有帮助:
参考资料
- Couchbase官方文档
- LangChain和Couchbase集成指南
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—