# Python_RAG_Heima **Repository Path**: stonebox/Python_RAG_Heima ## Basic Information - **Project Name**: Python_RAG_Heima - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-28 - **Last Updated**: 2026-05-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 1. # RAG 实战项目:服装商品智能客服(RAG 与智能体开发) ## 项目简介 - 项目领域:AI 大模型应用 - 核心方向:RAG(检索、增强和生成)与智能体开发 ## RAG 回顾 RAG(检索、增强和生成)核心分为两条处理线,聚焦提升模型回答的准确性与时效性: ### 1. 离线处理 - 持续向私有知识库(向量存储)添加知识文档,包含: - 超出现有模型训练时间的 “未来知识文档” - 各类私有领域知识文档 - 核心价值:为模型提供精准参考资料,有效规避 “模型幻觉”(一本正经的胡说八道)问题 ### 2. 在线处理 - 用户提问后,系统先基于私有知识库检索相关参考资料 - 同步组装新提示词,提交大模型生成最终答案 ## 项目需求和核心思路 ### 核心目标 - 以 “某东商品衣服” 为实例,基于衣服核心属性(尺码、颜色、洗涤养护等)构建本地知识库 - 支持用户自由更新本地知识,所有问题答案均严格基于本地知识库生成 - 实现服装商品智能客服功能,精准解答用户尺码推荐、颜色选择、洗涤养护等相关咨询 ### 处理流程 #### (一)离线流程 1. 本地知识文件准备(如尺码推荐.txt、洗涤养护.txt、颜色选择.txt) 2. 文件加载和读取 3. 文本切分处理(适配向量存储需求) 4. 切分后文本存入向量数据库(Chroma) #### (二)在线流程 1. 用户 Query(提问)接收 2. Query 向量化转换 3. 向量匹配(基于向量数据库检索相关知识) 4. Prompt 工程(结合检索结果构建优化提示词) 5. 提交 LLM(大语言模型)生成答案并反馈给用户 ## 项目核心文件说明 | 文件名称 | 功能描述 | | :-------------------: | :----------------------------------------------------------: | | app_file_upload.py | 知识库更新主程序(基于 Streamlit 开发),支持文件上传更新 | | app_qa.py | 项目主程序(基于 Streamlit 开发),启动对话 WEB 页面 | | config_data.py | 项目全局配置文件 | | file_history_store.py | 长期会话记忆存储服务 | | knowledge_base.py | 知识库更新核心服务,含文件处理、向量存储交互等 | | rag.py | RAG 核心服务,整合检索、Prompt 构建、LLM 调用逻辑 | | vector_stores.py | 向量存储服务,负责与 Chroma 向量库交互 | | 辅助资源 | chat history(会话历史存储)、chroma_db(向量数据库目录)、data(知识文件存储目录)、md5.text(MD5 校验文件) | ## 关键技术实现 ### 核心函数 / 类 - `check_md5()`:文件 MD5 校验函数,确保文件完整性 - `save_md5()`:MD5 值存储函数,记录已上传文件标识 - `get_string_md5(str)`:字符串 MD5 值计算函数 - `st.file_uploader()`:Streamlit 框架文件上传组件,支持用户上传知识文件 - `upload_by_str(self, data, filename)`:KnowledgeBaseService 类方法,支持字符串形式数据上传知识库 - `Class KnowledgeBaseService`:知识库服务核心类,包含 Chroma 向量库实例(self.chroma)、文本切分器(self.spliter)等关键属性 - `st.session_state`:Streamlit 会话状态存储对象,维护会话上下文 - `uploader_file.get_value()`:获取上传文件的原始数据 ### 技术框架 - WEB 开发框架:Streamlit(快速构建交互式 WEB 应用) - 向量数据库:Chroma(轻量级向量存储,适配项目需求) - 核心技术:RAG 检索增强生成、文本向量化、Prompt 工程、LLM 调用 ## 应用示例(客服对话演示) > 服装商品智能客服:你好,有什么可以帮到您! > > > > 用户:体重 170 斤,尺码推荐 > > > > 服装商品智能客服:正在思考中.. > > > > 服装商品智能客服:根据体重 170 斤,结合常规尺码标准,推荐如下: > > 若身高在 175-182cm 之间,建议选择 XXL 码;若身高在 183-190cm 之间,建议选择 XXXL 码(具体可参考商品详情页尺码表微调) ## 项目资源清单 ### 知识文件 - 尺码推荐.txt:服装尺码匹配规则、体重身高对应标准等 - 洗涤养护.txt:不同面料服装洗涤方式、养护注意事项等 - 颜色选择.txt:颜色搭配建议、场景适配推荐等 ### 程序文件 - 核心程序:app_file_upload.py、app_qa.py、config_data.py、file_history_store.py、knowledge_base.py、rag.py、vector_stores.py - 数据存储:chat history(会话历史)、chroma_db(向量数据库)、md5.text(MD5 校验记录)