# rag-demo **Repository Path**: zeus-maker/rag-demo ## Basic Information - **Project Name**: rag-demo - **Description**: No description available - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 0 - **Created**: 2024-12-23 - **Last Updated**: 2025-04-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Sentence-BERT 文本处理示例 这个项目展示了如何使用Sentence-BERT来处理和比较文本句子。Sentence-BERT是一个强大的预训练模型,可以将文本转换为高质量的语义向量表示。 ## 功能特点 - 将文本句子转换为向量表示 - 计算句子之间的语义相似度 - 支持批量处理多个句子 - 使用预训练模型,无需额外训练 - 支持将向量存储到Milvus Lite向量数据库 ## 环境要求 - Python 3.6+ - sentence-transformers - torch - pymilvus - towhee ## 安装依赖 ```bash pip install sentence-transformers pymilvus towhee ``` ## 使用方法 1. 运行基础示例代码: ```bash python sentence_bert_demo.py ``` 2. 运行Milvus Lite示例代码: ```bash python sentence_bert_milvus.py ``` 3. 代码会展示以下功能: - 将多个句子转换为向量 - 计算句子间的相似度 - 将向量存储到Milvus Lite - 进行向量相似度搜索 ## 注意事项 - 首次运行时会下载预训练模型,需要保持网络连接 - Milvus Lite数据存储在本地,确保有足够的磁盘空间 - 处理大量文本时注意内存使用 # PDF智能问答系统 这是一个基于RAG (Retrieval-Augmented Generation) 架构的PDF智能问答系统。系统可以读取PDF文档,并基于文档内容回答用户的问题。它结合了Sentence-BERT的文本向量化能力和通义千问的大语言模型,提供准确和相关的答案。 ## 功能特点 - PDF文档处理和文本提取 - 使用Sentence-BERT进行文本向量化 - 向量数据存储在Milvus Lite数据库 - 智能文本检索和相关度排序 - 使用通义千问模型生成答案 - 支持无相关文档时的通用问答 ## 环境要求 - Python 3.6+ - sentence-transformers - torch - pymilvus - dashscope - PyPDF2 - towhee ## 安装依赖 ```bash pip install -r requirements.txt ``` ## 环境变量配置 在项目根目录创建`.env`文件,添加以下配置: ``` DASHSCOPE_API_KEY=your_api_key_here TOKENIZERS_PARALLELISM=false # 避免tokenizers并行处理警告 ``` ## 使用方法 1. 将需要问答的PDF文件放入`pdfs`目录 2. 运行问答系统: ```bash python qa_assistant.py ``` 3. 系统会自动: - 处理PDF文件并提取文本 - 将文本分段并向量化 - 存储向量到Milvus Lite数据库 - 准备接收用户问题并生成答案 ## 问答流程 1. 系统首先在已处理的PDF文档中搜索与问题最相关的文本片段 2. 将相关文本片段作为上下文,结合用户问题生成提示词 3. 使用通义千问模型生成最终答案 4. 如果没有找到相关文档,系统会使用模型的通用知识来回答 ## 注意事项 - 首次运行时会下载预训练模型,需要保持网络连接 - 确保有足够的磁盘空间存储向量数据库 - 处理大型PDF文件时可能需要较长时间 - 需要有效的通义千问API密钥 ## 常见问题解决 1. tokenizers并行处理警告: - 在环境变量中设置`TOKENIZERS_PARALLELISM=false` - 或在代码运行前设置:`os.environ["TOKENIZERS_PARALLELISM"] = "false"` 2. API密钥错误: - 确保在`.env`文件中正确设置了`DASHSCOPE_API_KEY` - 或在创建QAAssistant实例时直接传入API密钥