Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
RAG-QA-Generator 是一个用于检索增强生成(RAG)系统的自动化知识库构建与管理工具。该工具通过读取文档数据,利用大规模语言模型生成高质量的问答对(QA对),并将这些数据插入数据库中,实现RAG系统知识库的自动化构建和管理。
| Date | Stars |
|---|---|
| 2026-07-24 | 278 |
| 2026-07-25 | 278 |
| 2026-07-28 | 278 |
| 2026-07-30 | 278 |
| 2026-08-06 | 278 |
Today
— stars today
This week
— stars this week
This month
— stars this month
Momentum
0.0
growth rate 0.00%/day
# 一、背景介绍
检索增强生成(RAG)系统已成为人工智能领域的一个重要发展方向,它结合了大规模语言模型的生成能力和外部知识库的精确信息,以提供更准确、更可靠的回答。然而,构建和维护RAG系统的知识库一直是一个耗时且复杂的过程,特别是在处理大量非结构化文档时。最近,我们正在为一个检索增强生成(RAG)系统开发一个自动化的问答(QA)生成工具。这个项目旨在缓解上述挑战,通过自动化流程将各种格式的文档转化为结构化的问答对,并将它们无缝集成到RAG系统的知识库中。
# 二、提出动机
本项目源于实际RAG系统开发中遇到的挑战,其中大致的动机有以下几点:
- **提高效率**:传统方法要么效果不佳,要么耗时过多,我们需要一种能够快速处理大量文档的方法。
- **提升质量**:利用大模型的智能性,我们希望生成的问答对能够更加贴合文本内容,提高知识库的质量。
- **减少人工干预**:通过自动化流程,我们旨在最小化人工参与,从而降低人为错误和主观偏差。
- **灵活适应**:我们需要一个系统能够处理各种格式的文档,并适应不同领域的知识需求。
- **用户友好**:即使是非技术人员也应该能够轻松使用这个系统,参与到知识库的构建和管理中。
# 三、技术方案
特别的,我们整体的技术方案可以归结为下面的几个部分:
- **文档处理**:使用langchain_community的document_loaders库来处理各种格式的文档(txt、pdf、docx),并基于此将其分割成适当大小的文本块。
- **AI驱动的QA生成**:利用OpenAI的API(在本案例中使用qwen2.5-72b模型)自动生成高质量的问答对。通过精心设计的prompt,确保生成的问答对紧密围绕文本内容。
- **知识库管理**:实现了一个灵活的集合管理系统,允许创建新的集合或选择现有集合来存储生成的QA对。使用RESTful API与后端数据库进行交互,实现数据的存储和检索。
- **用户界面**:基于Streamlit构建了一个直观、用户友好的Web界面。该界面提供了文件上传、QA对生成预览、知识库管理等功能,使整个过程变得简单明了。
- **进度跟踪和错误处理**:实现了详细的进度显示和错误处理机制,确保用户能够实时了解处理进展,并在出现问题时得到及时反馈。
- **缓存优化**:使用Streamlit的@st.cache_data装饰器来优化性能,特别是在QA对生成过程中。
- **安全性考虑**:使用临时文件处理上传的文档,处理后立即删除,以确保数据安全。
# 四、安装与使用
## 4.1 先决条件
- streamlit==1.22.0
- requests==2.31.0
- openai==0.28.0
- langchain==0.10.0
- PyMuPDF==1.22.5
- pandas==2.1.1
- langchain_community==0.1.0
- python==3.11.5
## 4.2 安装步骤
- 安装配置[TaskingAI](https://github.com/TaskingAI/TaskingAI)系统
- git clone https://github.com/taskingai/taskingai.git
- cd taskingai
- cd docker
- cp .env.example .env
- docker-compose -p taskingai --env-file .env up -d
- Once the service is up, access the TaskingAI console through your browser with the URL http://localhost:8080. The default username and password are admin and TaskingAI321.
- 克隆此仓库:
```
git clone https://github.com/wangxb96/RAG-QA-Generator.git
cd RAG-QA-Generator
```
- 安装依赖项:
```
pip install -r requirements.txt
```
- 配置API密钥和基础URL:
```
# 配置TaskingAI相关信息
base_url = 'http://your-api-url/v1/'
api_key = 'your-api-key'
headers = {"Authorization": f"Bearer {api_key}"}
# 配置大模型相关信息
client = OpenAI(
api_key="your-openai-api-key",
base_url="http://your-openai-api-url/v1",
)
```
## 4.3 运行应用
- 启动Streamlit应用:
```
streamlit run AutoQAG.py
```
- 打开浏览器并访问 http://localhost:8501。
## 4.4 页面概览
应用界面分为两个主要部分:
- **左侧边栏**:用于选择操作(上传文件或管理知识库)
- **主界面**:显示当前操作的详细内容和交互元素

_RAG管理主页面_
## 4.5 上传文件
- 在左侧边栏选择“上传文件”操作。
- 在主界面中,使用文件上传器上传非结构化文件(支持txt、pdf、docx格式)。
- 文件上传成功后,点击“处理文件并生成QA对”按钮。
- 系统将处理文件并生成QA对,显示进度条和结果摘要。
- 生成完成后,可以预览前3个QA对。

_文件上传与QA对生成_

_更新版本支持多个文件上传_

_预览生成的前3个QA对_
## 4.6 管理知识库
- 在左侧边栏选择“管理知识库”操作。
- 选择“*插入现有Collection*”或“*创建新Collection*”。
- 插入现有Collection:
- 从下拉列表中选择一个现有的Collection。
- 创建新Collection:
- 输入新Collection的名称。
- 设置Collection的容量(1-1000之间)。
- 点击“创建新Collection”按钮。

_插入现有知识库_

_插入新创建的知识库_
## 4.7 插入QA对到Collection
- 确保已经上传文件并生成了QA对。
- 在知识库管理界面,选择或创建一个Collection。
- 点击“插入QA对到选定的Collection”按钮。
- 系统将显示插入进度和结果摘要。

_没有生成QA时无法插入_

_插入知识库成功_
## 4.8 下载Collection或上传Collection
- 在知识库管理界面,选择一个Collection。
- 点击“下载选定的Collection的内容”按钮。
- 系统将显示获取的chunk数目。
- 点击“下载集合内容为JSON文件"下载对应Collection

_下载Collection_

_上传JSON文件到Collection_
# 五、技术实现
## 5.1 配置和初始化
首先,我们设置了必要的配置和初始化:
```python
base_url = 'your_knowledgebase_base_url'
api_key = 'your_knowledgebase_api_key'
headers = {"Authorization": f"Bearer {api_key}"}
client = OpenAI(
api_key="your_llm_api_key",
base_url="your_llm_base_url",
)
```
这部分设置了API的基础URL和认证信息,以及OpenAI客户端的配置。
## 5.2 核心功能函数
### 5.2.1 文本处理与问答对生成
- **get_completion**: 调用模型生成响应。
- **generate_qa_pairs_with_progress**: 生成问答对并显示进度。
#### 5.2.1.1 get_completion(prompt, model="qwen25-72b")
**功能**: 获取模型的响应。
**参数**:
- `prompt`: 要发送给模型的文本提示。
- `model`: 使用的模型名称,默认为"qwen25-72b"。
**返回**: 返回模型生成的响应内容。如果调用API时发生错误,则返回None。
```python
def get_completion(prompt, model="qwExcerpt of 23,371 characters
Read on GitHubWould you bet a product on this? Bounded 0–100 and slow moving.
matched fp:22dbd6a3f06fa995, topic:retrieval-augmented-generation, topic:question-answering
matched fp:22dbd6a3f06fa995, topic:vector-database
matched fp:22dbd6a3f06fa995, topic:large-language-models