导航菜单

  • 1.概述
  • 2.功能与能力
  • 3.系统架构
  • 4.部署与配置
  • 5.Docker 部署
  • 6.环境配置
  • 7.外部服务设置
  • 8.AI模型与LLM配置
  • 9.核心系统
  • 10.文档处理流水线
  • 11.RAG引擎与搜索
  • 12.知识库管理系统
  • 13.对话与对话系统
  • 14.翻译与跨语言支持
  • 15.用户界面
  • 16.主应用界面
  • 17.管理仪表盘
  • 18.文档编写界面
  • 19.知识库内容管理
  • 20.国际化与本地化
  • 21.管理功能
  • 22.用户与团队管理
  • 23.文件和存储管理
  • 24.知识库管理
  • 25.系统监控与健康状态
  • 26.API 参考
  • 27.知识库API
  • 28.对话与聊天API
  • 29.文件管理API
  • 30.管理与Admin API
  • 31.开发指南
  • 32.前端开发
  • 33.后端服务架构
  • 34.数据库模式与模型
  • 35.基础设施与文档
  • 36.快速入门指南
  • 1. 概述
  • 2. LLM 架构与模型类型
    • 2.1 模型类型说明
  • 3. 模型选择与路由
    • 3.1 模型选择流程
    • 3.2 模型路由逻辑
  • 4. 模型配置方法
    • 4.1 配置文件配置
    • 4.2 环境变量配置
    • 4.3 数据库配置
  • 5. 支持的模型工厂
    • 5.1 OpenAI
    • 5.2 Tongyi-Qianwen(通义千问)
    • 5.3 其他支持的工厂
  • 6. 模型配置最佳实践
    • 6.1 聊天模型选择
    • 6.2 嵌入模型选择
    • 6.3 重排序模型选择
    • 6.4 API 密钥管理
  • 7. 模型性能优化
    • 7.1 缓存策略
    • 7.2 批量处理
    • 7.3 并发控制
  • 8. 故障排除
    • 8.1 常见问题
    • 8.2 日志查看
    • 8.3 性能监控
  • 9. 高级配置
    • 9.1 自定义模型工厂
    • 9.2 模型代理配置
    • 9.3 多模型负载均衡
  • 10. 总结

# 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 模型路由逻辑 #

模型路由逻辑处理以下场景:

  1. 租户级配置:每个租户可以配置自己的默认模型
  2. 对话级配置:每个对话可以覆盖租户默认配置
  3. 任务级配置:根据任务类型(聊天、嵌入、重排序等)选择模型
  4. 工厂级配置:根据模型工厂(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 密钥管理 #

  1. 安全性:

    • 使用环境变量或密钥管理服务存储 API 密钥
    • 定期轮换 API 密钥
    • 限制 API 密钥的权限范围
  2. 成本控制:

    • 监控 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 = 10

8. 故障排除 #

8.1 常见问题 #

  1. API 密钥错误:

    • 检查 API 密钥是否正确
    • 验证 API 密钥是否过期
    • 确认 API 密钥权限
  2. 模型不可用:

    • 检查模型名称是否正确
    • 验证模型工厂是否支持该模型
    • 查看模型工厂文档
  3. 请求超时:

    • 增加超时时间
    • 检查网络连接
    • 验证 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):
        # 实现自定义嵌入模型
        pass

9.2 模型代理配置 #

配置模型代理:

model_proxy:
  enabled: true
  url: 'http://proxy.example.com:8080'
  timeout: 30

9.3 多模型负载均衡 #

配置多个模型实例进行负载均衡:

load_balancing:
  strategy: 'round_robin'  # 或 'least_connections'
  models:
    - name: 'gpt-4-1'
      weight: 1
    - name: 'gpt-4-2'
      weight: 1

10. 总结 #

AI 模型与 LLM 配置是 Ragflow-Plus 系统的核心组件,正确配置和管理模型对于系统的性能和成本至关重要。本文档提供了:

  • 五种主要模型类型的详细说明
  • 模型选择和路由机制
  • 多种配置方法(配置文件、环境变量、数据库)
  • 支持的模型工厂和模型列表
  • 配置最佳实践和性能优化建议
  • 故障排除和高级配置指南

通过遵循本文档的指导,您可以成功配置和管理 Ragflow-Plus 所需的 AI 模型,确保系统的高性能和成本效益。

访问验证

请输入访问令牌

Token不正确,请重新输入