在Intel Xeon上实现RAG:使用Chroma和文本生成推理的指南

72 阅读3分钟

引言

近年来,随机访问生成(RAG)技术在人工智能领域引起了广泛关注。本文将介绍如何在Intel® Xeon®可扩展处理器上使用Chroma和文本生成推理进行RAG,实现高效的AI性能。Intel® Xeon®处理器以其核心性能和安全技术脱颖而出,是满足高需求工作负载的理想选择。

主要内容

环境设置

为了在Intel® Xeon®处理器上使用文本生成推理,我们首先需要启动本地服务器实例:

# 设置模型和数据卷
model=Intel/neural-chat-7b-v3-3
volume=$PWD/data # 共享卷以避免每次运行下载权重

# 启动Docker容器
docker run --shm-size 1g -p 8080:80 -v $volume:/data ghcr.io/huggingface/text-generation-inference:1.4 --model-id $model

对于需要访问权限的模型,如LLAMA-2,需要在命令中使用有效的Hugging Face Hub令牌:

# 添加Hugging Face令牌
-e HUGGING_FACE_HUB_TOKEN=<token>

获取访问令牌可访问Hugging Face Token

测试API端点

检查服务器是否正常工作:

# 发送测试请求
curl localhost:8080/generate -X POST -d '{"inputs":"Which NFL team won the Super Bowl in the 2010 season?","parameters":{"max_new_tokens":128, "do_sample": true}}' -H 'Content-Type: application/json'

数据填充

如需填充数据库,可以运行以下命令:

# 安装依赖和运行脚本
poetry install
poetry run python ingest.py

该脚本会处理并存储Edgar 10k申报数据到Chroma数据库。

使用方法

确保安装了LangChain CLI:

pip install -U langchain-cli

新建LangChain项目并安装相关包:

langchain app new my-app --package intel-rag-xeon

或在已有项目中添加:

langchain app add intel-rag-xeon

server.py中添加代码:

from intel_rag_xeon import chain as xeon_rag_chain

add_routes(app, xeon_rag_chain, path="/intel-rag-xeon")

可选的LangSmith配置

注册LangSmith以帮助追踪、监控和调试应用:

export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY=<your-api-key>
export LANGCHAIN_PROJECT=<your-project>

启动LangServe实例:

langchain serve

在本地启动FastAPI应用,访问地址为http://localhost:8000

代码示例

以下是一个实现RAG的完整示例:

from langserve.client import RemoteRunnable

# 初始化远程可运行对象
runnable = RemoteRunnable("http://localhost:8000/intel-rag-xeon")

# 使用API代理服务提高访问稳定性
result = runnable.run(inputs={"question": "What are the benefits of Intel Xeon processors?"})
print(result)

常见问题和解决方案

  • 网络限制问题:由于某些地区的网络限制,开发者可能需要使用API代理服务来提高访问的稳定性。
  • 性能优化:确保Docker分配足够的共享内存(如--shm-size 1g)以避免性能瓶颈。

总结和进一步学习资源

本文介绍了在Intel Xeon处理器上实现RAG的方法,利用其AI性能优势。通过结合Chroma和文本生成推理,可以实现高效的数据处理和生成。

进一步学习资源:

参考资料

  • Intel® Xeon® Scalable Processors官方文档
  • Hugging Face官方页面
  • LangChain使用指南

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

---END---