[深入了解Amazon DocumentDB:向云端扩展MongoDB兼容数据库与向量搜索]

58 阅读2分钟

引言

Amazon DocumentDB 是一种使用户能够在云中轻松设置、操作和扩展与 MongoDB 兼容的数据库的服务。通过它,开发者可以利用向量搜索的强大功能,结合 JSON 文档数据库的灵活性和丰富的查询能力。本篇文章将带您一步步了解如何在 Amazon DocumentDB 中存储文档、创建索引并使用向量搜索执行查询。

主要内容

1. 部署 DocumentDB 集群

在开始之前,您需要部署一个 DocumentDB 集群。请参阅其开发者指南以获取详细步骤。完成部署后,您将获得连接字符串用于访问您的数据库。

2. 配置 OpenAI 环境

由于我们计划使用 OpenAI 的嵌入技術,我们需要配置 OpenAI 的环境变量以获取相关的 API 密钥。

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"

3. 加载文档并创建索引

首先,加载文档并将其存储到 DocumentDB 的集合中。接着,创建索引以便于查询。

from langchain.vectorstores.documentdb import DocumentDBSimilarityType, DocumentDBVectorSearch
from langchain_community.document_loaders import TextLoader
from langchain_text_splitters import CharacterTextSplitter
from pymongo import MongoClient

CONNECTION_STRING = getpass.getpass("DocumentDB Cluster URI:")
NAMESPACE = "izzy_test_db.izzy_test_collection"
DB_NAME, COLLECTION_NAME = NAMESPACE.split(".")

client: MongoClient = MongoClient(CONNECTION_STRING)  # 使用API代理服务提高访问稳定性
collection = client[DB_NAME][COLLECTION_NAME]

loader = TextLoader("path/to/your/documents.txt")
documents = loader.load()
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
docs = text_splitter.split_documents(documents)

# 创建向量索引
openai_embeddings = OpenAIEmbeddings(deployment="smart-agent-embedding-ada", model="text-embedding-ada-002")
vectorstore = DocumentDBVectorSearch.from_documents(docs, openai_embeddings, collection, "test-index")

# 设置为 COS 相似性算法
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)

常见问题和解决方案

  1. 连接问题:由于网络限制,可能会遇到连接失败的情况。建议使用 API 代理服务提高访问稳定性。

  2. 索引创建失败:确保在创建向量索引时,所用维度数与模型输出的尺寸一致。

  3. 嵌入模型配置:检查环境变量是否正确配置,以确保能正确加载 OpenAI 嵌入模型。

总结和进一步学习资源

通过本文,我们了解了如何在 Amazon DocumentDB 中实现与 MongoDB 兼容的操作以及强大的向量搜索功能。下列资源将提供更深入的学习材料:

参考资料

  1. docs.aws.amazon.com/documentdb/…
  2. beta.openai.com/docs/

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

---END---