# Ragflow-Plus AI 模型与 LLM 配置教程
本文档涵盖了 Ragflow-Plus 中 AI 模型的配置和管理,包括嵌入模型、聊天模型和用于不同任务的专用模型。它解释了系统如何将请求路由到适当的模型、配置模型参数,以及集成多种模型类型以实现最佳 RAG 性能。
有关使用 MinerU 进行文档处理的信息,请参阅 文档处理流程。有关搜索和检索引擎的详细信息,请参阅 RAG 引擎与搜索。
1. 概述 #
Ragflow-Plus 采用多模型架构,支持用于不同任务的各种 AI 模型类型。系统通过 LLMBundle 类和 TenantLLMService 使用集中式模型管理方法,允许根据租户需求和任务类型动态选择和配置模型。
2. LLM 架构与模型类型 #
系统通过 LLMType 枚举定义了五种主要模型类型,每种类型在 RAG 流程中都有特定用途:
┌─────────────────────────────────────────┐
│ 配置源 (Configuration Sources) │
│ ┌──────────┐ ┌──────────┐ ┌──────┐ │
│ │ LLM │ │ Tenant │ │Dialog│ │
│ │Factories │ │ Config │ │Config│ │
│ └──────────┘ └──────────┘ └──────┘ │
└─────────────────────────────────────────┘
↕
┌─────────────────────────────────────────┐
│ LLMBundle 模型管理 (Model Management) │
│ ┌──────────────────────────────────┐ │
│ │ TenantLLMService │ │
│ │ 模型配置获取 │ │
│ └──────────────────────────────────┘ │
│ ┌──────────────────────────────────┐ │
│ │ LLMBundle │ │
│ │ 模型实例管理 │ │
│ └──────────────────────────────────┘ │
└─────────────────────────────────────────┘
↕
┌─────────────────────────────────────────┐
│ 模型类型 (Model Types) │
│ ┌──────────┐ ┌──────────┐ ┌──────┐ │
│ │ CHAT │ │EMBEDDING │ │IMAGE2│ │
│ │ 对话生成 │ │ 文本向量 │ │ TEXT │ │
│ └──────────┘ └──────────┘ └──────┘ │
│ │
│ ┌──────────┐ ┌──────────┐ │
│ │ TTS │ │ RERANK │ │
│ │ 语音合成 │ │ 结果重排 │ │
│ └──────────┘ └──────────┘ │
└─────────────────────────────────────────┘2.1 模型类型说明 #
| 模型类型 | 枚举值 | 用途 | 示例模型 |
|---|---|---|---|
| CHAT | LLMType.CHAT |
对话生成和文本生成 | GPT-4, Claude, Qwen |
| EMBEDDING | LLMType.EMBEDDING |
文本向量化 | BAAI/bge-large-zh-v1.5, text-embedding-ada-002 |
| RERANK | LLMType.RERANK |
搜索结果重排序 | bge-reranker-base |
| IMAGE2TEXT | LLMType.IMAGE2TEXT |
图像理解 | GPT-4 Vision, Qwen-VL |
| TTS | LLMType.TTS |
文本转语音 | OpenAI TTS, Azure TTS |
| SPEECH2TEXT | LLMType.SPEECH2TEXT |
语音转文本 | Whisper |
3. 模型选择与路由 #
系统使用 llm_id2llm_type() 函数根据模型 ID 确定适当的模型类型。此映射通过 llm_factories.json 配置,该文件定义了可用的模型提供商及其功能。
3.1 模型选择流程 #
请求 (Request with llm_id)
↓
模型类型解析器 (llm_id2llm_type())
↓
LLM 工厂配置 (llm_factories.json)
↓
模型工厂选择 (Model Factory Selection)
↓
LLMBundle 实例 (LLMBundle Instance)3.2 模型路由逻辑 #
模型路由逻辑处理以下场景:
- 租户级配置:每个租户可以配置自己的默认模型
- 对话级配置:每个对话可以覆盖租户默认配置
- 任务级配置:根据任务类型(聊天、嵌入、重排序等)选择模型
- 工厂级配置:根据模型工厂(OpenAI、Tongyi-Qianwen 等)选择模型
4. 模型配置方法 #
4.1 配置文件配置 #
在 conf/service_conf.yaml 中配置默认模型:
user_default_llm:
factory: 'Tongyi-Qianwen' # 模型工厂名称
api_key: 'sk-xxxxxxxxxxxxx' # API 密钥
base_url: '' # 自定义 API 端点(可选)
default_models:
chat_model: 'qwen-plus' # 默认聊天模型
embedding_model: 'BAAI/bge-large-zh-v1.5@BAAI' # 默认嵌入模型
rerank_model: '' # 默认重排序模型(可选)
asr_model: '' # 默认语音识别模型(可选)
image2text_model: '' # 默认图像理解模型(可选)4.2 环境变量配置 #
通过环境变量配置模型:
# LLM 工厂配置
LLM_FACTORY=Tongyi-Qianwen
LLM_API_KEY=sk-xxxxxxxxxxxxx
LLM_BASE_URL=
# 默认模型配置
CHAT_MODEL=qwen-plus
EMBEDDING_MODEL=BAAI/bge-large-zh-v1.5@BAAI
RERANK_MODEL=
ASR_MODEL=
IMAGE2TEXT_MODEL=4.3 数据库配置 #
系统支持通过数据库配置租户级模型:
-- 租户模型配置表
CREATE TABLE tenant_llm (
tenant_id VARCHAR(255),
llm_factory VARCHAR(255),
llm_name VARCHAR(255),
api_key VARCHAR(255),
api_base VARCHAR(255),
PRIMARY KEY (tenant_id, llm_factory, llm_name)
);5. 支持的模型工厂 #
Ragflow-Plus 支持多个模型工厂,每个工厂提供不同的模型:
5.1 OpenAI #
- 聊天模型:gpt-4o, gpt-4o-mini, gpt-3.5-turbo
- 嵌入模型:text-embedding-ada-002, text-embedding-3-small, text-embedding-3-large
- 语音模型:whisper-1
- TTS 模型:tts-1, tts-1-hd
5.2 Tongyi-Qianwen(通义千问) #
- 聊天模型:qwen-plus, qwen-turbo, qwen-max
- 嵌入模型:BAAI/bge-large-zh-v1.5
- 图像模型:qwen-vl-plus, qwen-vl-max
5.3 其他支持的工厂 #
- Anthropic Claude:claude-3-opus, claude-3-sonnet, claude-3-haiku
- Google Gemini:gemini-pro, gemini-pro-vision
- Azure OpenAI:与 OpenAI 兼容的模型
- 本地模型:支持通过 Ollama 等工具部署的本地模型
6. 模型配置最佳实践 #
6.1 聊天模型选择 #
- 高性能场景:使用 GPT-4、Claude-3-Opus 等大模型
- 成本优化场景:使用 GPT-3.5-turbo、Qwen-Turbo 等轻量模型
- 中文场景:优先使用 Qwen、ChatGLM 等中文优化模型
6.2 嵌入模型选择 #
- 中文文档:使用 BAAI/bge-large-zh-v1.5
- 英文文档:使用 text-embedding-3-large
- 多语言文档:使用 multilingual-e5-large
6.3 重排序模型选择 #
- 中文场景:使用 bge-reranker-base
- 英文场景:使用 cohere-rerank-english-v3.0
6.4 API 密钥管理 #
安全性:
- 使用环境变量或密钥管理服务存储 API 密钥
- 定期轮换 API 密钥
- 限制 API 密钥的权限范围
成本控制:
- 监控 API 使用量
- 设置使用限制
- 使用缓存减少 API 调用
7. 模型性能优化 #
7.1 缓存策略 #
系统支持模型响应缓存:
# 启用缓存
CACHE_ENABLED = True
CACHE_TTL = 3600 # 缓存过期时间(秒)7.2 批量处理 #
对于大量文档,使用批量处理:
# 批量嵌入
embeddings = embedding_model.encode_batch(texts, batch_size=32)7.3 并发控制 #
控制并发请求数量:
# 限制并发数
MAX_CONCURRENT_REQUESTS = 108. 故障排除 #
8.1 常见问题 #
API 密钥错误:
- 检查 API 密钥是否正确
- 验证 API 密钥是否过期
- 确认 API 密钥权限
模型不可用:
- 检查模型名称是否正确
- 验证模型工厂是否支持该模型
- 查看模型工厂文档
请求超时:
- 增加超时时间
- 检查网络连接
- 验证 API 端点是否可访问
8.2 日志查看 #
查看模型相关日志:
# 查看应用日志
docker logs ragflowplus-server | grep -i "llm\|model"
# 查看错误日志
docker logs ragflowplus-server | grep -i "error\|exception"8.3 性能监控 #
监控模型性能:
# 记录模型调用时间
import time
start_time = time.time()
result = model.generate(prompt)
end_time = time.time()
print(f"Model call took {end_time - start_time:.2f} seconds")9. 高级配置 #
9.1 自定义模型工厂 #
实现自定义模型工厂:
from rag.llm import LLMBundle
class CustomModelFactory:
def create_chat_model(self, config):
# 实现自定义聊天模型
pass
def create_embedding_model(self, config):
# 实现自定义嵌入模型
pass9.2 模型代理配置 #
配置模型代理:
model_proxy:
enabled: true
url: 'http://proxy.example.com:8080'
timeout: 309.3 多模型负载均衡 #
配置多个模型实例进行负载均衡:
load_balancing:
strategy: 'round_robin' # 或 'least_connections'
models:
- name: 'gpt-4-1'
weight: 1
- name: 'gpt-4-2'
weight: 110. 总结 #
AI 模型与 LLM 配置是 Ragflow-Plus 系统的核心组件,正确配置和管理模型对于系统的性能和成本至关重要。本文档提供了:
- 五种主要模型类型的详细说明
- 模型选择和路由机制
- 多种配置方法(配置文件、环境变量、数据库)
- 支持的模型工厂和模型列表
- 配置最佳实践和性能优化建议
- 故障排除和高级配置指南
通过遵循本文档的指导,您可以成功配置和管理 Ragflow-Plus 所需的 AI 模型,确保系统的高性能和成本效益。