/images/hugo/avatar.png

RagFlow ORM

上一节我们介绍了 RagFlow 中的表,这一节我们来介绍 Ragflow 中的表操作。Ragflow 将表操作定义在了不同的 Service 中,这些 Service 定义在 api\db\services

1. api\db

首先我们来看一下 api\db 的结构。

Rag LLM 使用

1. LLM 参数配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
{
    "temperature": 0.5,
    "top_k": 50,
    "top_p": 0.9,
    "repetition_penalty": 1.2,
    # 对数几率偏差,永久调整 token 被选中的概率,比如说避免脏话
    "logit_bias":  {   
        "50256": -100
    }
}

这些参数通常出现在基于生成模型的 LLM(大语言模型) API 请求中,用于控制生成文本的多样性、质量和风格。下面逐一解释这些参数:

Rag 检索增强的方法

1. 文本分块

智能分块的方法:

  1. 语义分块: 需要计算每一个句子与前一个句子的相似度,如果相似则合并为一个分块。
  2. 基于大语言模型的分块: 使用大语言模型直接对文本进行分块
  3. 上下文感知分块: 无论哪种分块策略,都可以使用大语言模型为每个分块添加上下文,比如给分块添加总结文本解释其在整个文档中的作用、标签信息、提问信息。

2. 查询语句解析

为了优化搜索,检索器可以解析提示词,以识别意图,并对其编辑、重写,或者彻底转换提示词,以优化检索效果。

Rag 信息检索理论

1. 检索核心技术

现代检索系统主要采用两种搜索技术

  1. 语义搜索(Semantic Search): 通过理解文档含义进行匹配
  2. 关键词搜索(Keyword Search)

/images/rag/search.png

RagFlow 中的表

在深入到具体业务代码之前,我们先来看看 ragflow 都定义了哪些表。

1. Ragflow 定义的表

Ragflow 定义了以下表,这些表位于 api\db\db_models.py

表名 主要字段/关联 作用说明
user id,email,language,timezone 用户账号信息与登录属性
tenant id,llm_id,embd_id,asr_id,img2txt_id,rerank_id 租户/工作区,默认模型与额度配置
user_tenant user_id,tenant_id,role 用户与租户的关系与角色
invitation_code code,user_id,tenant_id 邀请码与受邀记录
llm_factories name,tags,logo 模型厂商目录
llm 复合主键(fid,llm_name), model_type,tags,is_tools 厂商下具体模型清单与能力标签
tenant_llm 复合主键(tenant_id,llm_factory,llm_name), api_key,api_base,max_tokens 租户绑定的具体模型配置(包含 API Key、Base URL、额度等)
tenant_langfuse tenant_id,host,public_key,secret_key 租户的 Langfuse 观测配置
knowledgebase id,tenant_id,language,embd_id,parser_id,parser_config,pagerank 知识库元数据与默认解析/检索参数
document id,kb_id,parser_id,parser_config,name,location,size,progress 文档元数据、解析进度与统计
file id,parent_id,tenant_id,name,location,size,type 文件/文件夹元信息(资源管理)
file2document file_id,document_id 文件与文档映射关系
task id,doc_id,from_page,to_page,progress,retry_count,digest,chunk_ids 文档解析任务与进度、重试和产物
dialog id,tenant_id,llm_id,rerank_id,prompt_config,llm_setting,top_k,kb_ids 对话应用配置(检索+生成)
conversation id,dialog_id,user_id,message,reference 某对话应用下的会话与消息摘要
api_token 复合主键(tenant_id,token), dialog_id,source,beta API 访问令牌(可绑定应用/来源)
api_4_conversation id,dialog_id,user_id,tokens,duration,round,errors,source API 调用产生的会话与用量/错误日志
user_canvas id,user_id,title,permission,dsl 用户画布(编排/工作流)实例
canvas_template id,title,canvas_type,dsl 画布模板库
user_canvas_version id,user_canvas_id,title,description,dsl 画布版本历史
mcp_server id,tenant_id,name,url,server_type,headers,variables MCP Server 注册与调用配置
search id,tenant_id,name,search_config 独立搜索配置(跨 KB/Doc、检索/重排/高亮等)

按照相关性,这些表可以分为: