使用Voyage AI实现嵌入式检索系统:从入门到精通
引言
随着人工智能的快速发展,理解和处理文本信息的能力变得尤为重要。Voyage AI作为前沿的嵌入模型提供商,能够帮助开发者高效地进行文本嵌入和语义检索。这篇文章将向你介绍如何使用Voyage AI的嵌入功能来构建一个简单但功能强大的检索系统。
主要内容
1. Voyage AI Embeddings入门
Voyage AI提供了多种嵌入模型,支持不同的应用场景。要使用这些模型,首先需要注册并获取API Key。接下来,我们将展示如何使用VoyageAIEmbeddings类来生成嵌入。
# 安装LangChain VoyageAI插件
# pip install langchain-voyageai
from langchain_voyageai import VoyageAIEmbeddings
# 初始化VoyageAIEmbeddings
embeddings = VoyageAIEmbeddings(
voyage_api_key="[ Your Voyage API key ]",
model="voyage-law-2"
)
2. 文档和查询嵌入
一旦我们初始化了嵌入模型,就可以对文档和查询进行嵌入。以下是如何准备文档和将其转换为嵌入的示例:
documents = [
"Caching embeddings enables the storage or temporary caching of embeddings, eliminating the necessity to recompute them each time.",
"An LLMChain is a chain that composes basic LLM functionality.",
"A Runnable represents a generic unit of work that can be invoked, batched, streamed, and/or transformed.",
]
# 获取文档的嵌入
documents_embds = embeddings.embed_documents(documents)
同时,我们也可以对查询进行嵌入:
query = "What's an LLMChain?"
# 获取查询的嵌入
query_embd = embeddings.embed_query(query)
3. 语义检索系统
嵌入的主要用途之一是进行语义检索。通过计算嵌入之间的余弦相似度,我们可以找到最相关的文档。以下是使用KNNRetriever类实现检索功能的示例:
from langchain_community.retrievers import KNNRetriever
# 初始化检索器
retriever = KNNRetriever.from_texts(documents, embeddings)
# 检索最相关的文档
result = retriever.invoke(query)
top1_retrieved_doc = result[0].page_content # 获取第一个检索结果
print(top1_retrieved_doc)
代码示例
完整的代码示例如下:
from langchain_voyageai import VoyageAIEmbeddings
from langchain_community.retrievers import KNNRetriever
# 使用API代理服务提高访问稳定性
embeddings = VoyageAIEmbeddings(
voyage_api_key="[ Your Voyage API key ]",
model="voyage-law-2"
)
documents = [
"Caching embeddings enables the storage or temporary caching of embeddings, eliminating the necessity to recompute them each time.",
"An LLMChain is a chain that composes basic LLM functionality.",
"A Runnable represents a generic unit of work that can be invoked, batched, streamed, and/or transformed.",
]
# 获取文档的嵌入
documents_embds = embeddings.embed_documents(documents)
query = "What's an LLMChain?"
# 获取查询的嵌入
query_embd = embeddings.embed_query(query)
# 初始化检索器
retriever = KNNRetriever.from_texts(documents, embeddings)
# 检索最相关的文档
result = retriever.invoke(query)
top1_retrieved_doc = result[0].page_content
print(top1_retrieved_doc)
常见问题和解决方案
- 访问API的问题:由于网络限制,有些区域访问API可能不稳定。建议使用API代理服务来确保稳定性。
- 文档格式化问题:确保输入的文档和查询是文本格式,以保证嵌入过程的顺利进行。
总结和进一步学习资源
本文介绍了如何使用Voyage AI进行文档和查询的嵌入以及构建简单的检索系统。通过这些工具,开发者可以更轻松地实现复杂的语义搜索需求。想要深入了解更多,推荐以下资源:
参考资料
- Voyage AI API文档
- LangChain官方指南
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---