【GDE 分享】Gemma 2 + RAG: 打造个人 AI 文档问答系统
示例效果
写在前面
是不是经常会遇到这样的困扰?今天,我们将利用下面两个技术为自己定制一个本地的 ChatFile 的 AI 问答系统:
2. 检索增强生成技术: RAG (Retrieval - Augmented Generation)
Gen AI 技术发展
LLM 技术生态全景
Google 生成式 AI
Google 在 AI 领域采取了双轨制战略:
闭源商业模型 Gemini 系列 (1.0/1.5 Flash/1.5 Pro/2.0 等) - 语言文本模型/多模态模型 Imagen 系列 - 文生图模型 Embedding Models - 文本 embedding/多模态 embedding 开放模型 Gemma 系列 (Gemma 1|2, Code Gemma, Pali Gemma 等)
Gemma 是 Google 的一系列轻量级开放模型,继承了 Gemini 的核心技术。其中 Gemma 2 是截止目前最新的模型版本。
2B 参数版本: 适合边缘计算场景
9B 参数版本: 平衡性能和资源需求
27B 参数版本: 提供最佳性能
快速了解 RAG
△ Comparison between the three paradigms of RAG
检索和预处理: RAG 利用强大的搜索算法查询外部数据,例如网页、知识库和数据库。检索完毕后,相关信息会进行预处理,包括标记化、词干提取和停用词移除。
生成: 经过预处理的检索到的信息接着会无缝整合到预训练的 LLM 中。此整合增强了 LLM 的上下文,使其能够更全面地理解主题。这种增强的上下文使 LLM 能够生成更精确、更翔实且更具吸引力的回答。
RAG 的运行方式是: 首先, 使用 LLM 生成的查询从数据库中检索相关信息。然后, 将这种检索到的信息整合到 LLM 的查询输入中,使其能够生成更准确且与上下文更相关的文本
实战从 0-1 构建智能文档助手
在本教程中,我们将带您了解如何设置和使用一个命令行工具,通过它您可以使用最先进的语言模型 Gemma 2 与您的 PDF 文件进行对话交互。
公开源代码
项目概述
1. PDF 文本提取
2. 文本向量化
3. 智能问答生成
系统模块
前置条件
在开始之前,请确保您已准备:
1. Python 3.7 或更高版本
2. 系统已安装 Git
3. 用于 Vertex AI 的 Google Cloud 账号
4. 申请用于访问 Gemma 2 的 Groq API 密钥
5. 安装 Python Typer 库命令行应用程序构建工具
步骤 1: 环境设置
# Clone the repositorygit clone https://github.com/Julian-Cao/chat-file-with-gemma.gitcd chat-file-with-gemma# Create and activate a virtual environmentpython -m venv venvsource venv/bin/activate # On Windows, use `venv\Scripts\activate`# Install the required dependenciespip install -r requirements.txt
步骤 2: 配置
在项目根目录创建 config.json 文件,包含您的 Google Cloud 和 Groq API 凭证:
{"project_id": "your-google-cloud-project-id","region": "your-google-cloud-region","groq_key": "your-groq-api-key"}
步骤 3: 了解项目结构
1. chat.py: 包含文本处理和交互的核心功能
2. requirements.txt: 列出所有 Python 依赖
3. demo.pdf: 示例 PDF 文件 — Attention Is All You Need
4. config.json: 存储你的 API 凭证 (需要自行创建)
5. README.md
Attention Is All You Need
https://arxiv.org/abs/1706.03762
步骤 4: 工作原理
文本提取:应用程序使用 PyMuPDF (以 fitz 导入) 从 PDF 文件中提取文本并将其分割成可管理的块。 文本嵌入:使用 Vertex AI 的文本嵌入模型为文本块创建向量表示。这使得后续可以进行高效的相似度搜索。 相似度搜索:当你提出问题时,应用程序通过比较问题的嵌入向量与文档块的嵌入向量找到最相关的内容。 响应生成:通过 Groq API 使用 Gemma 2 基于相关上下文和你的问题生成响应。
步骤 5: 运行你的 ChatFile 应用程序
现在你可以运行应用程序:
python chat.py应用程序会提示你提供 PDF 文件路径。处理完文档后,你就可以开始询问关于其内容的问题。
开始使用
根据提示,输入 PDF 文件的路径。
应用程序将处理文档,这可能需要一些时间,具体取决于文件大小。
处理完成后,你就可以开始询问文档相关的问题。
输入你的问题并按回车。应用程序将根据文档内容提供答案。
要切换到不同的文档,在提示输入问题时输入 **'c'**。
要退出应用程序,在提示输入问题时输入 **'q'**。
示例交互
> python chat.pyPlease enter the path to your file (or 'q' to quit): /path/to/your/document.pdfInitializing with file: /path/to/your/document.pdfExtracting text chunks…Processing chunks…Embedded all chunksSaved embedded chunks to embedded_chunks_1234567890abcdef.jsonInitialization complete. You can now start asking questions.Enter your question below(or 'q' to quit, 'c' to change file)Question: What is the main topic of this document?[Answer will appear here]- -Enter your question below(or 'q' to quit, 'c' to change file)Question: qThank you for using the Interactive File Q&A System. Goodbye!
最后
恭喜!你已经设置并使用了由 Gemma 2 驱动的本地 ChatFile 应用。这个工具让你能够以对话方式与 PDF 文档交互。
缓存嵌入,使用相同文档时能更快地运行
具有丰富文本格式的交互式命令行界面
无需重启应用程序即可在不同文档之间切换
谷歌开发者特别招募活动进行中
诚邀热爱技术的你加入
通过多种形式 (文章/视频/coding 等) 创作与 Google 技术相关的讲解分享、实践案例或活动感受等内容,以及分享您应用 AI 技术的故事经历与成果。我们将为您提供平台和资源,助力您在分享中提升技能。更有惊喜权益等您领取,快来报名参与吧!