# 探索Amazon DocumentDB及其向量搜索功能:全面入门指南
Amazon DocumentDB是一个完全托管的数据库服务,以与MongoDB兼容的方式运行。这使得开发人员能够无缝迁移现有应用程序。此外,DocumentDB还结合了向量搜索的能力,允许在JSON格式的文档数据库中执行高级查询。这篇文章将带您深入了解如何使用DocumentDB的向量搜索功能。
## 引言
在现代应用程序中,处理和分析非结构化数据是一个关键挑战。Amazon DocumentDB提供了一种与MongoDB兼容的解决方案,不仅支持传统的文档存储,还允许通过向量搜索进行复杂查询。本文旨在为您提供关于DocumentDB设置、操作及其向量搜索功能的详细指南。
## 主要内容
### 1. 设置Amazon DocumentDB集群
在使用DocumentDB之前,需要设置一个集群。您可以参考[开发者指南](https://docs.aws.amazon.com/documentdb/latest/developerguide/what-is.html)来获取详细的设置步骤。
### 2. 向量搜索基础
DocumentDB的向量搜索结合了JSON文档和近似最近邻算法(如“余弦相似性”、“欧氏距离”和“点积”)的使用。默认情况下,DocumentDB使用HNSW索引。
### 3. 使用OpenAI Embeddings
为了实现向量搜索,我们将使用OpenAIEmbeddings。这需要设置必要的环境变量,如API密钥和模型名称。
```python
import getpass
import os
# 设置OpenAI环境变量
os.environ["OPENAI_API_KEY"] = getpass.getpass("OpenAI API Key:") # 输入OpenAI API Key
os.environ["OPENAI_EMBEDDINGS_DEPLOYMENT"] = "smart-agent-embedding-ada" # 部署名称
os.environ["OPENAI_EMBEDDINGS_MODEL_NAME"] = "text-embedding-ada-002" # 模型名称
4. 加载文档并创建索引
利用Langchain库,我们将加载文档,创建索引,并执行查询。
from pymongo import MongoClient
from langchain.vectorstores.documentdb import (
DocumentDBSimilarityType,
DocumentDBVectorSearch,
)
from langchain_openai import OpenAIEmbeddings
from langchain_text_splitters import CharacterTextSplitter
# DocumentDB连接字符串
CONNECTION_STRING = "<Your_Connection_String>" # 使用API代理服务提高访问稳定性
client: MongoClient = MongoClient(CONNECTION_STRING)
collection = client["izzy_test_db"]["izzy_test_collection"]
vectorstore = DocumentDBVectorSearch.from_documents(
documents=docs,
embedding=openai_embeddings,
collection=collection,
index_name="izzy-test-index-2",
)
vectorstore.create_index(1536, 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. 配置错误
确保所有环境变量正确配置,并且API密钥有效。
总结和进一步学习资源
通过这篇文章,您已经了解了如何在Amazon DocumentDB中实施向量搜索。要深入学习此主题,可以参考以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---