探索Amazon DocumentDB中向量搜索的强大功能

2 阅读2分钟

探索Amazon DocumentDB中向量搜索的强大功能

引言

Amazon DocumentDB 是一个高度兼容 MongoDB 的文档数据库,它结合了JSON文档数据库的灵活性和向量搜索的强大能力,极大地简化了在云中设置、操作和扩展MongoDB兼容数据库的过程。本文将指导您如何使用Amazon DocumentDB进行向量搜索,通过存储文档、创建索引并使用近似最近邻算法执行向量搜索查询。

主要内容

设置 Amazon DocumentDB 集群

在开始使用向量搜索之前,您需要首先部署一个DocumentDB集群。具体步骤请参考开发者指南

使用 OpenAI 嵌入

向量搜索需要嵌入模型来将文本转换为向量。我们将使用 OpenAI 提供的嵌入模型,因此需设置相应的环境变量。

import getpass
import os

# 设置OpenAI环境变量
os.environ["OPENAI_API_KEY"] = getpass.getpass("OpenAI API Key:")
os.environ["OPENAI_EMBEDDINGS_DEPLOYMENT"] = "smart-agent-embedding-ada"
os.environ["OPENAI_EMBEDDINGS_MODEL_NAME"] = "text-embedding-ada-002"

加载文档和创建索引

我们将使用pymongo连接DocumentDB,并创建一个向量索引以进行查询。

from pymongo import MongoClient
from langchain.vectorstores.documentdb import DocumentDBVectorSearch

CONNECTION_STRING = getpass.getpass("DocumentDB Cluster URI:") # 使用API代理服务提高访问稳定性
DB_NAME = "izzy_test_db"
COLLECTION_NAME = "izzy_test_collection"
INDEX_NAME = "izzy-test-index-2"

client = MongoClient(CONNECTION_STRING)
collection = client[DB_NAME][COLLECTION_NAME]

# 创建向量索引
vectorstore = DocumentDBVectorSearch.from_documents(
    documents=docs,
    embedding=openai_embeddings,
    collection=collection,
    index_name=INDEX_NAME,
)

vectorstore.create_index(dimensions=1536, similarity_algorithm=DocumentDBSimilarityType.COS)

代码示例

以下是一段完整的实现代码,展示了如何进行文本的相似性搜索。

query = "What did the President say about Ketanji Brown Jackson"
docs = vectorstore.similarity_search(query)
print(docs[0].page_content)

常见问题和解决方案

如何应对网络限制问题?

由于某些地区的网络限制,访问外部API(如DocumentDB)可能会遇到问题。在这种情况下,建议使用API代理服务来提高访问稳定性。

向量维度选择

选择合适的向量维度对性能至关重要。文中示例使用OpenAI的嵌入模型,默认维度为1536。

总结和进一步学习资源

Amazon DocumentDB提供了强大的功能来支持复杂查询和数据分析。要更深入理解向量搜索的应用,您可以参阅以下学习资源:

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---