minRAG是从零开始的RAG系统,追求极致的简单和强大,不超过1万行代码,无需安装,双击启动.支持OpenAI、Gitee AI、百度千帆、腾讯云LKE、阿里云百炼、字节火山引擎等AI平台.
使用FTS5实现BM25全文检索,使用Vec实现向量检索,实现了 MarkdownConverter、DocumentSplitter、OpenAIDocumentEmbedder、SQLiteVecDocumentStore、OpenAITextEmbedder、VecEmbeddingRetriever、FtsKeywordRetriever、DocumentChunkReranker、PromptBuilder、OpenAIChatMemory、OpenAIChatGenerator、ChatMessageLogStore、Pipeline等组件,支持流水线设置和扩展.
因为 reranker 没有统一标准,组件参数中base_url要填写完整的路径
minRAG实现了OpenAI的标准规范,所有兼容OpenAI的平台都可以使用.
AI平台默认是 Gitee AI,Gitee AI每天100次免费调用
- 注册或设置页面的AI平台
base_url
填写 https://ai.gitee.com/v1 - 注册或设置页面的AI平台
api_key
填写 免费或者付费的token OpenAITextEmbedder
默认使用bge-m3
模型GiteeDocumentChunkReranker
组件参数{"base_url":"https://ai.gitee.com/api/serverless/bge-reranker-v2-m3/rerank","model":"bge-reranker-v2-m3"}
OpenAIChatGenerator
建议使用DeepSeek-V3
模型
- 注册或设置页面的AI平台
base_url
填写SecretId
,或在组件参数配置{"SecretId":"xxx"}
- 注册或设置页面的AI平台
api_key
填写SecretKey
,或在组件参数配置{"SecretKey":"xxx"}
LKETextEmbedder和LKEDocumentEmbedder
默认使用lke-text-embedding-v1
模型LKEDocumentChunkReranker
默认使用lke-reranker-base
模型OpenAIChatGenerator
使用OpenAI SDK方式接入,组件参数配置{"base_url":"https://api.lkeap.cloud.tencent.com/v1","api_key":"xxx","model":"deepseek-v3"}
- 记得修改流水线中的组件
- 注册或设置页面的AI平台
base_url
填写 https://qianfan.baidubce.com/v2 - 注册或设置页面的AI平台
api_key
填写 永久有效API Key OpenAITextEmbedder
和OpenAIDocumentEmbedder
默认使用bge-large-zh
模型,1024维度DocumentChunkReranker
组件参数配置{"base_url":"https://qianfan.baidubce.com/v2/rerankers","model":"bce-reranker-base","top_n":5,"score":0.1}
OpenAIChatGenerator
建议使用deepseek-v3
模型- 记得修改流水线中的组件
- 注册或设置页面的AI平台
base_url
填写 https://dashscope.aliyuncs.com/compatible-mode/v1 - 注册或设置页面的AI平台
api_key
填写 申请的API KEY OpenAITextEmbedder
和OpenAIDocumentEmbedder
默认使用text-embedding-v3
模型,1024维度BaiLianDocumentChunkReranker
组件参数配置{"base_url":"https://dashscope.aliyuncs.com/api/v1/services/rerank/text-rerank/text-rerank","model":"gte-rerank","top_n":5,"score":0.1}
OpenAIChatGenerator
建议使用deepseek-v3
模型- 记得修改流水线中的组件
- 注册或设置页面的AI平台
base_url
填写 https://ark.cn-beijing.volces.com/api/v3 - 注册或设置页面的AI平台
api_key
填写 申请的API KEY OpenAITextEmbedder
和OpenAIDocumentEmbedder
建议使用doubao-embedding
模型,兼容1024维度DocumentChunkReranker
火山引擎暂时没有Reranker模型,建议使用其他平台的Reranker模型或者去掉OpenAIChatGenerator
建议使用deepseek-v3
模型- 记得修改流水线中的组件
运行minRAG,会输出访问的路径,根据提示使用浏览器访问 http://127.0.0.1:738/admin/login
首次运行会进入安装界面.
首次运行minRAG,一定要先进行安装设置管理员的账号密码.安装界面如下图:
支持OpenAI、Gitee AI、百度千帆、腾讯云LKE、阿里云百炼、字节火山引擎等AI平台,在安装时可以配置对应的base_url
和对应的api_key
,腾讯云知识引擎TKE比较特殊,需要填写SecretId
和SecretKey
.
默认是[Gitee AI]平台,每天免费100次调用,可以使用免费的api_key
进行测试.
安装成功之后,页面会有提示信息:恭喜您,成功安装minrag,现在请登录
浏览器访问 http://127.0.0.1:738/admin/login
,正常显示登录页面,输入安装时设置的账号密码.
- 重命名 minragdatadir/template/install.html.bak 为 install.html
- 重启minrag,重新安装初始化管理员账号密码,数据不会丢失
登录之后,默认查看智能体
功能,默认初始化了default
默认智能体,列表显示ID,名称,知识库 流水线,排序,状态,操作
字段参数说明:
- ID: 系统默认生成的32位唯一编码,用户可以修改,提交保存后不可修改.
- 名称: 智能体的名称
- 智能体设定: 配置智能体的Prompt提示词,例如:"我是一个AI私人助手"
- 默认回复: 设置智能体在无匹配答案时的默认回复内容,例如:"非常抱歉,可用聊其他话题吗?"
- 欢迎语: 定义用户首次使用时的欢迎消,例如:"您好,有什么可以帮助您吗?"
- 知识库: 关联知识库,默认是
默认知识库
- 流水线: 关联流水线,默认是
default
流水线 - 工具函数:
Function Calling
调用的函数数组,例如:["get_weather"]
- 排序: 排序编号,系统按照倒叙排序
- 状态: 智能体的运行状态,有
可用
和禁用
两个状态
查看管理知识库功能,左侧是知识库,右侧是文档
+新增知识库
跳转到新增知识库界面.
选中知识库,字体颜色为蓝色,右侧显示改知识库下的内容,如下图示例,选中默认知识库
知识库后面有功能提示的图标,鼠标悬浮显示功能菜单.
有以下四个功能:
- 上传文档:为该知识库新增文档
- 新增子知识库:在该知识库下新增子知识库
- 编辑知识库: 编辑该知识库
- 删除知识库: 删除该知识库
新增子知识库的功能界面如下:
选中左侧的知识库,点击上传文档
按钮,文档就上传到选中的知识库.上传之后文档列表如下:
内容列表有基于fts5
实现的全文检索功能,输入关键字,点击搜索图标,完成搜索.
点击ID
会跳转到修改界面,操作有编辑
和删除
.可以编辑文档所属的知识库和状态等信息,编辑功能如下:
minRAG的数据处理步骤都是组件,包括流水线也是组件,组件类型有:
- MarkdownConverter: 转化和处理Markdown和文本文件
- DocumentSplitter: 分割文档
- LKEDocumentEmbedder: 腾讯云LKE的文档Embedding模型
- OpenAIDocumentEmbedder: OpenAI的文档Embedding模型
- SQLiteVecDocumentStore: SQLiteVec的向量化保存
- Pipeline: 流水线
- LKETextEmbedder: 腾讯云LKE的文本Embedding模型
- OpenAITextEmbedder: OpenAI的文本Embedding模型
- VecEmbeddingRetriever: SQLiteVec向量查询
- FtsKeywordRetriever: FTS5的BM25全文检索
- LKEDocumentChunkReranker: 腾讯云LKE的Reranker模型重排序
- GiteeDocumentChunkReranker: Gitee的Reranker模型重排序
- BaiLianDocumentChunkReranker: 阿里云百炼的Reranker模型重排序
- DocumentChunkReranker: 默认的Reranker模型重排序
- PromptBuilder: 构建Prompt提示词
- OpenAIChatMemory: 记忆聊天消息上下文
- OpenAIChatGenerator: 大模型LLM
- ChatMessageLogStore: 保存聊天记录
点击 +添加组件
按钮,进入添加页面,可以选择已经支持的组件类型,设置ID和组件参数
其中Pipeline
比较重要,参数格式是{"start":"启动的组件ID","process":{"组件ID":"下一个组件ID"}}
,例如:
{
"start": "OpenAITextEmbedder",
"process": {
"OpenAITextEmbedder": "VecEmbeddingRetriever",
"VecEmbeddingRetriever": "FtsKeywordRetriever",
"FtsKeywordRetriever": "GiteeDocumentChunkReranker",
"GiteeDocumentChunkReranker": "PromptBuilder",
"PromptBuilder": "OpenAIChatMemory",
"OpenAIChatMemory": "OpenAIChatGenerator",
"OpenAIChatGenerator": "ChatMessageLogStore"
}
}
模板更改时需要刷新站点才能生效,同时刷新站点会生成静态文件,用于Nginx
静态化访问.
刷新站点
功能会生成静态html文件到 statichtml
目录,同时生成gzip_static
文件,需要把正在使用的主题的 css,js,image
和minragdatadir/public
目录复制到 statichtml
目录下,也可以用Nginx反向代理指定目录.
nginx 配置示例如下:
### 当前在用主题(default)的css文件
location ~ ^/css/ {
#gzip_static on;
root /data/minrag/minragdatadir/template/theme/default;
}
### 当前在用主题(default)的js文件
location ~ ^/js/ {
#gzip_static on;
root /data/minrag/minragdatadir/template/theme/default;
}
### 当前在用主题(default)的image文件
location ~ ^/image/ {
root /data/minrag/minragdatadir/template/theme/default;
}
### search-data.json FlexSearch搜索的JSON数据
location ~ ^/public/search-data.json {
#gzip_static on;
root /data/minrag/minragdatadir;
}
### public 公共文件
location ~ ^/public/ {
root /data/minrag/minragdatadir;
}
### admin 后台管理,请求动态服务
location ~ ^/admin/ {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:738;
}
### 静态html目录
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
## 存在q查询参数,使用动态服务.也支持FlexSearch解析public/search-data.json
if ($arg_q) {
proxy_pass http://127.0.0.1:738;
break;
}
### 开启gzip静态压缩
#gzip_static on;
### Nginx 1.26+ 不需要再进行302重定向到目录下的index.html,gzip_static也会生效.这段配置留作记录.
##if ( -d $request_filename ) {
## 不是 / 结尾
## rewrite [^\/]$ $uri/index.html redirect;
##以 / 结尾的
## rewrite ^(.*) ${uri}index.html redirect;
##}
### 当前在用主题(default)的静态文件目录
root /data/minrag/minragdatadir/statichtml/default;
## 避免目录 301 重定向,例如 /about 会301到 /about/
try_files $uri $uri/index.html;
index index.html index.htm;
}
用于系统设置,需要重启minRAG才能生效.可以修改AI平台base_url
和AI平台api_key
设置站点的基础内容信息,其中主题是读取minragdatadir/template/theme
目录下的主题文件夹,更换主题之后,需要点击刷新站点
功能,刷新前台界面. logo
是前台界面显示的logo,后台的logo固定为minRAG
的logo,暂时不支持更改.
主题模板的增删改查功能,管理主题中的自定义模板文件,修改内容和知识库时,可以应用自定义的模板文件.
支持上传主题zip压缩包,用于新增主题,也可以从主题市场
中下载主题,进行安装
退出管理后台