使用Voyage AI实现嵌入式检索系统:从入门到精通

175 阅读3分钟

使用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)

常见问题和解决方案

  1. 访问API的问题:由于网络限制,有些区域访问API可能不稳定。建议使用API代理服务来确保稳定性。
  2. 文档格式化问题:确保输入的文档和查询是文本格式,以保证嵌入过程的顺利进行。

总结和进一步学习资源

本文介绍了如何使用Voyage AI进行文档和查询的嵌入以及构建简单的检索系统。通过这些工具,开发者可以更轻松地实现复杂的语义搜索需求。想要深入了解更多,推荐以下资源:

参考资料

  • Voyage AI API文档
  • LangChain官方指南

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

---END---