引言
在现代信息检索中,如何从大规模文档集合中获得精确和相关的结果是一个重要挑战。本文将介绍如何使用VoyageAI提供的前沿rerank端点与基础检索模型结合,以提升检索效率和精确度。
主要内容
安装和准备
首先,我们需要安装VoyageAI和相关的库:
%pip install --upgrade --quiet voyageai
%pip install --upgrade --quiet langchain-voyageai
%pip install --upgrade --quiet faiss
注意:根据Python版本不同,可能需要安装faiss-cpu。
%pip install --upgrade --quiet faiss-cpu
我们还需要在Voyage AI官网创建账户并获取API密钥。
设置API密钥
使用getpass模块设置API密钥:
import getpass
import os
os.environ["VOYAGE_API_KEY"] = getpass.getpass("Voyage AI API Key:")
初始化基础向量检索器
我们将使用FAISS作为向量检索器,VoyageAI提供的嵌入模型来处理文本向量化。
from langchain_community.document_loaders import TextLoader
from langchain_community.vectorstores import FAISS
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_voyageai import VoyageAIEmbeddings
documents = TextLoader("path/to/state_of_the_union.txt").load()
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=100)
texts = text_splitter.split_documents(documents)
retriever = FAISS.from_documents(
texts, VoyageAIEmbeddings(model="voyage-law-2")
).as_retriever(search_kwargs={"k": 20})
使用VoyageAI进行重排序
在基础检索结果上使用VoyageAI的rerank功能进行重排序。
from langchain.retrievers import ContextualCompressionRetriever
from langchain_openai import OpenAI
from langchain_voyageai import VoyageAIRerank
llm = OpenAI(temperature=0)
compressor = VoyageAIRerank(
model="rerank-lite-1", voyageai_api_key=os.environ["VOYAGE_API_KEY"], top_k=3
)
compression_retriever = ContextualCompressionRetriever(
base_compressor=compressor, base_retriever=retriever
)
compressed_docs = compression_retriever.invoke(
"What did the president say about Ketanji Jackson Brown"
)
代码示例
这是一个完整的代码示例,展示了如何使用VoyageAI对检索结果进行重排序:
# 使用API代理服务提高访问稳定性
from langchain.chains import RetrievalQA
chain = RetrievalQA.from_chain_type(
llm=OpenAI(temperature=0), retriever=compression_retriever
)
result = chain({"query": "What did the president say about Ketanji Brown Jackson"})
print(result['result'])
常见问题和解决方案
- 网络访问问题:在某些地区,访问国际API可能不稳定,建议使用API代理服务来改善访问稳定性。
- 搜索结果不理想:尝试调整
k值或选择不同的嵌入和重排序模型以提升结果质量。
总结和进一步学习资源
通过结合VoyageAI的嵌入模型和重排序功能,可以显著提高信息检索的精确性。对此主题感兴趣的读者还可以探索LangChain和FAISS的更多功能。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---