Groq + Llama 3 实现本地 RAG:Phidata 框架的应用与性能展示
Phidata 是一个框架,专为构建具备记忆、知识和工具的 AI 智能体而设计。
https://www.phidata.com/
https://github.com/phidatahq/phidata
https://docs.phidata.com/introduction
Phidata 三方面增强 LLM 功能:
记忆:Phidata 通过存储聊天历史在数据库中,使大型语言模型能够支持更长时间的对话,从而更好地理解和跟踪对话上下文。 知识:通过将业务相关的信息存储在向量数据库中,Phidata 为模型提供了丰富的业务背景知识,增强了其对专业内容的理解和响应能力。 工具:Phidata 赋予了大型语言模型执行具体操作的能力,例如从 API 获取数据、发送电子邮件或进行数据库查询,从而扩展了模型的实用性和应用范围。
Phidata 工作流程
创建一个助手。
添加工具(即各种功能)、知识库(vectordb)和数据存储(database)。
通过使用 Streamlit、FastAPI 或 Django 等工具来部署和服务化你的AI应用。
注:
向量数据库(vectordb)主要用于存储和检索向量化的数据。在AI应用中,向量数据库通常用于增强模型的上下文理解能力,通过向量化的方式存储关键信息,支持复杂的查询和动态的内容推荐。例如,在推荐系统或语义搜索中非常有用。
数据存储(database)用于存储各种形式的数据,包括文本、数字、记录等。数据库在AI应用中主要用于持久化存储用户数据、交互历史和应用状态等。这些信息可用于后续的数据分析、报告生成或为持续的对话提供历史上下文。
Phidata 官方演示
https://hn.aidev.run/
https://arxiv.aidev.run/
推荐 Phidata 的一个主要原因是它更新迅速,并且支持多种大型语言模型(LLM)。
https://github.com/phidatahq/phidata/tree/main/cookbook/llms
安装 Phidata
pip install -U phidata
Groq 上使用 Llama3 实现 RAG
https://github.com/phidatahq/phidata/tree/main/cookbook/llms/groq/rag
对于词嵌入(Embeddings),选择使用 Ollama 或 OpenAI。
1. 创建虚拟环境
python3 -m venv ~/.venvs/aienv
source ~/.venvs/aienv/bin/activate
2. 导出你的 Groq API 密钥
export GROQ_API_KEY=***
3. 使用 Ollama 或 OpenAI 生成词嵌入
要使用 Ollama 生成词嵌入,请先安装 Ollama,然后运行nomic-embed-text
模型:
ollama run nomic-embed-text
要使用 OpenAI 生成词嵌入,请导出你的 OpenAI API 密钥:
export OPENAI_API_KEY=sk-***
4. 安装依赖库
pip install -r cookbook/llms/groq/rag/requirements.txt
5. 运行PgVector
先安装 Docker Desktop。然后使用辅助脚本运行:
./cookbook/run_pgvector.sh
或者直接使用docker run
命令运行:
docker run -d \
-e POSTGRES_DB=ai \
-e POSTGRES_USER=ai \[app.py](..%2Fapp.py)
-e POSTGRES_PASSWORD=ai \
-e PGDATA=/var/lib/postgresql/data/pgdata \
-v pgvolume:/var/lib/postgresql/data \
-p 5532:5432 \
--name pgvector \
phidata/pgvector:16
6. 运行RAG应用
streamlit run cookbook/llms/groq/rag/app.py
打开localhost:8501
查看你的RAG应用。
添加网站链接或PDF文件,然后提出问题。
实际体验
在运行 streamlit run cookbook/llms/groq/rag/app.py
时,如果系统提示缺少 psycopg
或 pgvector
,你可以通过执行 pip install psycopg
和 pip install pgvector
来安装这些缺失的库。
我上传了一份 2MB 的 Phi-3 技术报告的 PDF 文件到程序中,模型在几秒内完成了文件的嵌入处理。
之后提出问题,可以即时得到答案。
这得益于 Groq 的高速生成能力,在 llama3-70b-8192 模型下,生成速度可达 280 Tokens/s。实际使用中,我发现用英文提问的效果比中文更好。
对网页内容提问
我对 Phidata 满意,它提供的示例代码简洁明了,易于理解。
此外,它还优化了输出格式,使得即使是在终端运行简单的 Python 文件,也能看到美观的输出结果。
结语
总的来说,Phidata 提供了一个强大且灵活的框架,可以大幅增强大型语言模型的能力。
通过整合记忆、知识和工具,Phidata 不仅优化了数据处理和交互效率,也极大地扩展了应用场景。
推荐大家体验。
精选历史文章,请看这里:
Groq API 使用指南:无需申请即可体验,从速率限制到模型参数解析
Mac 用户的 RAG 交互:通过 Chat-with-MLX 与数据对话
实测在Mac上使用Ollama与AI对话的过程 - 模型选择、安装、集成使用记,从Mixtral8x7b到Yi-34B-Chat