探索Couchbase向量搜索:优化应用的数据查询

引言

在现代应用开发中,数据的高效存储和检索至关重要。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—

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值