Tio Boot DocsTio Boot Docs
Home
文档导航
  • java-db
  • api-table
  • jooq
  • mysql
  • postgresql
  • oceanbase
  • Enjoy
  • Tio Boot Admin
  • java-openai
  • ai_agent
  • knowlege_base
  • voice-agent
  • ai-search
  • ai-coding
  • ai-browser
  • 案例
Abount
AI 检索
  • Github
  • Gitee
Home
文档导航
  • java-db
  • api-table
  • jooq
  • mysql
  • postgresql
  • oceanbase
  • Enjoy
  • Tio Boot Admin
  • java-openai
  • ai_agent
  • knowlege_base
  • voice-agent
  • ai-search
  • ai-coding
  • ai-browser
  • 案例
Abount
AI 检索
  • Github
  • Gitee
  • 入门

    • 01 · 入门

      • 01_introduction
      • tio-boot:新一代高性能 Java Web 开发框架
      • tio-boot 入门示例
      • Tio-Boot 配置 : 现代化的配置方案
      • tio-boot 整合 hotswap-classloader 实现热加载
      • 自行编译 tio-boot
      • 最新版本
      • 开发规范
  • 部署与日志

    • 02 · 部署

      • 02_deployment
      • 使用 Maven Profile 实现分环境打包 tio-boot 项目
      • Maven 项目配置详解:依赖与 Profiles 配置
      • tio-boot 打包成 FatJar
      • 使用 GraalVM 构建 tio-boot Native 程序
      • 使用 Docker 部署 tio-boot
      • 部署到 Fly.io
      • 部署到 AWS Lambda
      • 到阿里云云函数
      • 使用 Deploy 工具部署
      • 使用Systemctl启动项目
      • 使用 Jenkins 部署 Tio-Boot 项目
      • 使用 Nginx 反向代理 Tio-Boot
      • 使用 Supervisor 管理 Java 应用
      • 历史部署页与替代方案
      • 胖包与瘦包的打包与部署
      • 使用 JDK 8 构建基础库与验证运行环境
    • 03 · 日志

      • 日志
      • tio-boot 整合 Logback
  • 核心开发

    • 04 · 配置

      • 04_configuration
      • 配置参数
      • 服务器监听器
      • 内置缓存系统 AbsCache
      • 使用 Redis 作为内部 Cache
      • 静态文件处理器
      • 基于域名的静态资源隔离
      • DecodeExceptionHandler
      • 开启虚拟线程(Virtual Thread)
      • 框架级错误通知
    • 05 · JSON

      • 05_json
      • Json
      • 接受 JSON 和响应 JSON
      • 响应实体类
    • 06 · Web 开发

      • Web 开发
      • 路由与参数

        • 概述
        • 添加 Controller
        • handler入门
        • HttpRequestFunction:直接注册 Service 方法
        • Handler 的请求方法与错误响应
        • 接收请求参数
        • 接收日期参数
        • 接收数组参数
        • HttpRequest
        • 请求校验与响应转换
      • 响应与文件

        • 返回字符串
        • 返回文本数据
        • 返回网页
        • 请求和响应字节
        • 文件上传
        • 文件下载
        • 返回视频文件并支持断点续传
        • HttpResponse
        • Resps
        • RespBodyVo
        • 动态 返回 CSS 实现
        • 返回图片
        • 返回 multipart
        • 使用零拷贝发送大文件
        • 分片上传
        • WebJars
      • 会话与请求控制

        • http Session
        • Cookie 读取与设置
        • 重定向和转发
        • Controller拦截器
        • 请求拦截器
        • LoggingInterceptor
        • 全局异常处理器
        • 跨域
        • 自定义 Handler 转发请求
        • 使用 HttpForwardHandler 转发所有请求
        • HTTP Basic 认证
        • Http响应加密
      • 异步与流式输出

        • 异步处理
        • Transfer-Encoding: chunked 实时音频播放
        • Server-Sent Events (SSE)
      • 工具与监控

        • 常用工具类
        • 接口访问统计
        • 接口请求和响应数据记录
        • JProtobuf
        • 测速
        • Gzip Bomb:使用压缩炸弹防御恶意爬虫
    • 07 · 参数校验

      • 07_validation
      • 数据紧校验规范
      • 参数校验
    • 08 · WebSocket 应用开发

      • 08_websocket
      • 使用 tio-boot 搭建 WebSocket 服务
      • WebSocket 聊天室项目示例
    • 09 · AOP

      • 09_aop
      • JFinal-aop
      • Aop 工具类
      • 配置
      • 独立使用 JFinal Aop
      • @AImport
      • 自定义注解拦截器
      • 原理解析
    • 10 · 国际化

      • 10_i18n
      • i18n
    • 11 · Enjoy 模板

      • 11_enjoy
      • tio-boot 整合 Enjoy 模版引擎文档
      • Tio-Boot 整合 Java-DB 与 Enjoy 模板引擎示例
      • 引擎配置
      • 表达式
      • 指令
      • 注释
      • 原样输出
      • Shared Method 扩展
      • Shared Object 扩展
      • Extension Method 扩展
      • Spring boot 整合
      • 独立使用 Enjoy
      • tio-boot enjoy 自定义指令 localeDate
      • PromptEngine
      • Enjoy 入门示例-擎渲染大模型请求体
      • Tio Boot + Enjoy:分页与 SEO 实战指南
      • TioBoot + Enjoy 生成 robots.txt 与 sitemap.xml:实战与SEO指南
      • Enjoy 使用示例
    • 12 · 定时任务

      • 12_scheduling
      • Quartz 定时任务集成指南
      • 分布式定时任务 xxl-jb
      • cron4j 使用指南
    • 13 · 测试

      • 13_testing
      • TioBootTest:环境与 AOP 初始化
      • 真实 HTTP 集成测试
      • 数据库集成测试与隔离
    • 14 · tio-utils

      • 14_tio-utils
      • tio-utils
      • EnvUtils 配置工具
      • Notification
      • Email
      • JSON
      • File
      • Base64
      • 上传和下载
      • Http
      • Telegram
      • RsaUtils
      • HttpUtils
      • ByteBufferUtils
      • 系统监控
      • 线程
      • 虚拟线程
      • 毫秒并发 ID (MCID) 生成方案
      • Base64 输入与锁等待
      • Gzip 与字节缓冲区
      • 字符串查找与随机整数
      • 日期转换与文件名解析
      • JSON 泛型转换与输出配置
      • JWT 签发与校验
      • 集合分页 PageUtils
      • URL 与流复制工具
  • 数据库与数据访问

    • 15 · java-db

      • 15_java-db
      • Db 工具类
      • java‑db
      • 操作数据库入门示例
      • SQL 模板 (SqlTemplates)
      • 数据源配置与使用
      • ActiveRecord
      • Db 工具类
      • 批量操作
      • Model
      • Model生成器
      • 注解
      • 异常处理
      • 数据库事务处理
      • Cache 缓存
      • Dialect 多数据库支持
      • 表关联操作
      • 复合主键
      • Oracle 支持
      • Enjoy SQL 模板
      • 整合 Enjoy 模板最佳实践
      • 多数据源支持
      • 独立使用 ActiveRecord
      • 调用存储过程
      • java-db 整合 Guava 的 Striped 锁优化
      • 生成 SQL
      • 通过实体类操作数据库
      • java-db 读写分离
      • Spring Boot 整合 Java-DB
      • like 查询
      • 常用操作示例
      • Druid 监控集成指南
      • SQL 统计
      • Db 与 PostgreSQL 业务实践
      • 查询资源自动管理
      • Row 展示转换与表格导出
      • 支付回执与权益事务
      • 商业库存与按量履约事务
    • 16 · api-table

      • 16_api-table
      • ApiTable 概述
      • 使用 ApiTable 连接 SQLite
      • 使用 ApiTable 连接 Mysql
      • 使用 ApiTable 连接 Postgres
      • 使用 ApiTable 连接 TDEngine
      • 使用 api-table 连接 oracle
      • 使用 api-table 连接 mysql and tdengine 多数据源
      • EasyExcel 导出
      • EasyExcel 导入
      • ApiTable 的权限与业务边界
      • ApiTable 联调与故障定位
      • ApiTable 实现增删改查
      • 数组类型
      • 单独使用 ApiTable
      • TQL(Table SQL)前端输入规范
    • 17 · MyBatis

      • 17_mybatis
      • Tio-Boot 整合 MyBatis
      • 使用配置类方式整合 MyBatis
      • 整合数据源
      • 使用 mybatis-plus 整合 tdengine
      • 整合 mybatis-plus
    • 18 · jOOQ

      • 18_jooq
      • 使用配置类方式整合 jOOQ
      • tio-boot + jOOQ 事务管理
      • 批量操作与性能优化
      • 整合agroal
      • 代码生成与类型安全
      • 基于 Record / POJO 增删改查
      • UPSERT、批量更新、返回主键与高级 SQL
      • 的多表关联查询、DTO 投影、聚合统计与视图封装
      • 的窗口函数、CTE、JSON 查询与 PostgreSQL 高级 SQL 实战
      • tio-boot + jOOQ 的审计字段、乐观锁、数据权限与企业级 Repository 设计
      • 测试策略、SQL 日志、性能诊断与生产排障
      • 多租户、读写分离与多数据源设计
      • 代码生成治理、数据库迁移与团队协作规范实战
    • 19 · PostgreSQL

      • 19_postgresql
      • PostgreSQL 安装
      • PostgreSQL 主键自增
      • PostgreSQL 日期类型
      • Postgresql 金融类型
      • PostgreSQL 数组类型
      • 索引
      • PostgreSQL 查询优化
      • 获取字段类型
      • PostgreSQL 全文检索
      • PostgreSQL 向量
      • PostgreSQL 优化向量查询
      • PostgreSQL 其他
    • 20 · MySQL

      • 20_mysql
      • 使用 Docker 运行 MySQL
      • 常见问题
    • 21 · OceanBase

      • 21_oceanbase
      • 快速体验 OceanBase 社区版
      • 快速上手 OceanBase 数据库单机部署与管理
      • 诊断集群性能
      • 优化 SQL 性能指南
      • 待定
    • 22 · Oracle

      • 22_oracle
      • Oracle
    • 23 · SQL Server

      • 23_sqlserver
      • SQL Server
    • 24 · SQLite

      • 24_sqlite
      • SQLite
    • 25 · MongoDB

      • 25_mongodb
      • tio-boot 使用 mongo-java-driver 操作 mongodb
    • 26 · Elasticsearch

      • 26_elasticsearch
      • Elasticsearch
      • JavaDB 整合 ElasticSearch
      • Elastic 工具类使用指南
      • Elastic-search 注意事项
      • ES 课程示例文档
  • 缓存与消息队列

    • 27 · Cache

      • 27_cache
      • Caffeine
      • CacheUtils 工具类
      • 使用 java-db 整合 ehcache
    • 28 · Redis

      • 28_redis
      • 使用 Docker 安装 Redis
      • 使用 java-db 整合 Redis
      • Java DB Redis 相关 Api
      • redis 使用示例
      • 和 RedisTemplate 协作
      • 使用 Jedis 连接池接入 Redis
      • hutool RedisDS
      • Redisson
      • Caffeine 与 Redis 两级缓存
      • 使用 CacheUtils 整合 caffeine 和 redis 实现的两级缓存
    • 29 · 消息队列

      • 29_mq
      • Mica-mqtt
      • EMQX
      • Disruptor
    • 30 · Kafka

      • 30_kafka
      • Kafka
      • AWS MSK
  • 认证与账号体系

    • 31 · 认证与权限

      • 31_authentication
      • FixedTokenInterceptor
      • TokenManager
      • 数据表
      • 匿名登录
      • 个人中心
      • 权限校验注解
      • Sa-Token
      • sa-token 登录注册
      • StpUtil.isLogin() 源码解析
    • 32 · 第三方登录注册

      • 32_third-party-auth
      • 邮箱登录和注册
      • 邮箱重置密码
      • 腾讯云短信登录注册
      • 腾讯云短信重置密码
      • 阿里云短信登录和注册
      • 阿里云短信重置密码
      • 微信登录与绑定手机号
      • 支付宝登录与绑定手机号
      • 微信小程序手机号快捷登录
      • Google登录
      • 阿里云邮件推送验证邮箱
  • 网络通信

    • 33 · AIO

      • 33_aio
      • ByteBuffer
      • AIO HTTP 服务器
      • 自定义和线程池和池化 ByteBuffer
      • AioHttpServer 应用示例 IP 属地查询
      • 手写 AIO Http 服务器
      • Java 21 中的虚拟线程与 AIO
    • 34 · t-io

      • 34_tio
      • 认识 t-io

        • t-io 核心优势与应用价值
        • t-io 消息处理流程
      • 快速上手

        • TioBootServer
        • 独立端口启动 TCP 服务器
        • 内置 TCP 处理器
        • 独立启动 UDPServer
        • 使用内置 UDPServer
      • 核心概念

        • TioConfig
        • ChannelContext
        • Packet
        • Tio 工具类
      • 消息与文件传输

        • 发送数据
        • HTTP 长连接与高效文件传输
        • 使用 AsynchronousSocketChannel 响应数据
      • 连接管理

        • 业务数据绑定
        • 业务数据解绑
        • 关闭连接
        • 资源共享
        • 成员排序
        • 拉黑 IP
      • 加密通信

        • SSL
        • Https建立连接过程
      • 心跳与监控

        • 监控: 心跳
        • 监控: 客户端的流量数据
        • 监控: 单条 TCP 连接的流量数据
        • 监控: 端口的流量数据
        • 单条通道统计: ChannelStat
        • 所有通道统计: GroupStat
      • 深入原理

        • tio-运行原理详解
        • DecodeRunnable
        • t-io 稳定性设计与资源管理
        • 深入解析 Tio 源码:构建高性能 Java 网络应用
        • HTTP、WebSocket 与 TCP 的缓冲区复用
    • 35 · tio-http-server

      • 35_tio-http-server
      • 使用 Tio-Http-Server 搭建简单的 HTTP 服务
      • tio-boot 添加 HttpRequestHandler
      • 在 Android 上使用 tio-boot 运行 HTTP 服务
      • tio-http-server-native
      • handler 常用操作
      • tio-http-server 与 tio-boot 的使用边界
    • 36 · tio-websocket

      • 36_tio-websocket
      • WebSocket 服务器
      • WebSocket Client
      • TCP 数据转发
    • 37 · Netty

      • 37_netty
      • Netty TCP Server
      • Netty Web Socket Server
      • 使用 protoc 生成 Java 包文件
      • Netty WebSocket Server 二进制数据传输
      • Netty 组件详解
    • 38 · netty-boot

      • 38_netty-boot
      • Netty-Boot
      • 原理解析
      • 整合 Hot Reload
      • 整合 数据库
      • 整合 Redis
      • 整合 Elasticsearch
      • 整合 Dubbo
      • Listener
      • 文件上传
      • 拦截器
      • Spring Boot 整合 Netty-Boot
      • SSL 配置指南
      • ChannelInitializer
      • Reserve
  • 集成与扩展

    • 39 · 第三方集成

      • 39_integrations
      • 整合 okhttp
      • 整合 GrpahQL
      • 集成 Mailjet
      • 整合 ip2region
      • 整合 GeoLite 离线库
      • 整合 Lark 机器人指南
      • 集成 Lark Mail 实现邮件发送
      • Thymeleaf
      • Swagger
      • Clerk 验证
      • 集成datadog
    • 40 · Magic Script

      • 40_magic-script
      • tio-boot 与 magic-script 集成指南
    • 41 · Groovy

      • 41_groovy
      • tio-boot 整合 Groovy
      • 调试常用脚本
    • 42 · 爬虫

      • 42_crawling
      • jsoup
      • 爬取 z-lib.io 数据
      • 整合 WebMagic
      • WebMagic 示例:爬取学校课程数据
      • Playwright
      • Flexmark (Markdown 处理器)
      • tio-boot 整合 Playwright
      • 缓存网页数据
    • 43 · Dubbo

      • 43_dubbo
      • 概述
      • dubbo 2.6.0
      • dubbo 2.6.0 调用过程
      • dubbo 3.2.0
    • 44 · Spring

      • 44_spring
      • Spring Boot Web 整合 Tio Boot
      • spring-boot-starter-webflux 整合 tio-boot
      • tio-boot 整合 spring-boot-starter
      • Tio Boot 整合 Spring Boot Starter db
      • Tio Boot 整合 Spring Boot Starter Data Redis 指南
    • 45 · Spring Cloud

      • 45_spring-cloud
      • tio-boot spring-cloud
    • 46 · Quarkus

      • 46_quarkus
      • Quarkus(无 HTTP)整合 tio-boot(有 HTTP)
      • tio-boot + Quarkus + Hibernate ORM Panache
      • tio-boot + Quarkus + Hibernate ORM Panache + jOOQ 整合方案
    • 47 · Telegram4J

      • 47_telegram4j
      • 数据库设计
      • 基于 HTTP 协议开发 Telegram 翻译机器人
      • 基于 MTProto 协议开发 Telegram 翻译机器人
      • 过滤旧消息
      • 保存机器人消息
      • 定时推送
      • 增加命令菜单
      • 使用 telegram-Client
      • 使用自定义 StoreLayout
      • 延迟测试
      • Reactor 错误处理
      • Telegram4J 常见错误处理指南
      • 处理回调查询
      • Reactor
      • 文档翻译
      • 使用 Tio-Boot 整合 tdlight
      • tio-boot 整合 TelegramBots
      • tio-boot 整合 Telegram-Bot-Utils
      • Telegram-Bot-Utils 使用指南
    • 48 · Telegram Bots

      • 48_telegram-bots
      • TelegramBots 入门指南
      • 使用工具库 telegram-bot-base 开发翻译机器人
    • 49 · 文件存储

      • 49_file-storage
      • 文件上传数据表
      • 本地存储
      • 存储到 亚马逊 S3
      • 存储到 Cloudflare R2
      • 存储到 腾讯 COS
      • 上传文件到阿里云 OSS
    • 50 · 支付

      • 支付集成
      • 微信小程序支付:普通支付
      • 微信支付:Native 扫码支付(PC 网页扫码)
      • 支付宝:电脑网站支付接入指南
      • 支付宝:使用 page.pay 二维码前置模式实现网页内扫码支付
  • Firebase 与 Clerk

    • 51 · Firebase

      • 51_firebase
      • 整合 google firebase
      • Firebase Storage
      • Firebase Authentication
      • 使用 Firebase Admin SDK 进行匿名用户管理与自定义状态标记
      • 导出用户
      • 登录注册
      • 注册回调
    • 52 · Clerk

      • 52_clerk
      • Clerk
  • 多媒体

    • 53 · 音视频处理

      • 53_media
      • JAVE 提取视频中的声音
      • Jave 提取视频中的图片
      • 待定
    • 54 · 语音识别

      • 54_asr
      • Whisper-JNI
    • 55 · 语音合成

      • 55_tts
    • 56 · 文字识别

      • 56_ocr
    • 57 · Native Media

      • 57_native-media
      • java-native-media
      • JNI 入门示例
      • mp3 拆分
      • mp4 转 mp3
      • 使用 libmp3lame 实现高质量 MP3 编码
      • Linux 编译
      • macOS 编译
      • 从 JAR 包中加载本地库文件
      • 支持的音频和视频格式
      • 任意格式转为 mp3
      • 通用格式转换
      • 通用格式拆分
      • 视频合并
      • VideoToHLS
      • split_video_to_hls 支持其他语言
      • 持久化 HLS 会话
      • 获取视频长度
      • 保存视频的最后一帧
      • 添加水印
      • linux版本
    • 58 · 计算机视觉

      • 58_computer-vision
      • 使用 Java 运行 YOLOv8 ONNX 模型进行目标检测
      • tio-boot整合yolo
      • ONNX Runtime 推理说明
      • Paddle Structure
      • tio-boot 整合 Paddle Structure
      • tio-boot整合Paddle Structure 提取图片
      • U2Net 图片去背景原理
      • tio-boot 整合 U2Net 实现图片去背景
  • AI 开发

    • 59 · java-openai

      • 59_java-openai
      • 简介
      • 流式生成
      • 图片多模态输入
      • Google Gemini接入
      • google Vertex AI 接入
      • Perplexity API
      • WhisperClient 语音识别
      • SupadataClient 获取视频字幕
      • GiteeClient 文档解析与图片 OCR
      • DeepSeekClient 官方模型查询
      • BailianTTSClient 语音合成
      • 为单次生成配置独立传输策略
      • 按业务档位选模型
      • OpenAI、Claude 与 DeepSeek 联网搜索
      • UniChatClient 与调用方 HTTP 客户端
    • 60 · AI Agent

      • 60_ai-agent
      • 数据库设计
      • 示例问题管理
      • 会话管理
      • 历史记录
      • 意图识别
      • 智能问答
      • 文件上传与解析文档
      • 翻译
      • 名人搜索功能实现
      • Ai studio gemini youbue 问答使用说明
      • 自建 YouTube 字幕问答系统
      • 自建 获取 youtube 字幕服务
      • 使用 OpenAI ASR 实现语音识别接口(Java 后端示例)
      • 定向搜索
      • 16
      • 17
      • 18
      • 在 tio-boot 应用中整合 ai-agent
      • 接口文档
      • 自定义 ChatAskService
      • 请求记录
      • 限流和错误处理
      • 增强检索(RAG)
      • 结构化数据检索
      • AI 问答
      • 连接代码执行器
      • 待定
      • 模型编程能力评测
      • 音频会话 SDP 示例
    • 61 · 知识库

      • Java MossKB 知识库文档
      • 学术论文
      • 数据库设计
      • 用户登录实现
      • 模型管理
      • 知识库管理
      • 文档拆分
      • 片段向量
      • 命中测试
      • 文档管理
      • 片段管理
      • 问题管理
      • 应用管理
      • 向量检索
      • 推理问答
      • 问答模块
      • 统计分析
      • 用户管理
      • VL模型文档解析方案和费用对比
      • 文档解析模型实测
      • 文档解析优化
      • 片段汇总
      • 段落分块与检索
      • 多文档解析
      • 检索性能优化
      • 对话日志
      • 创建独立用户与账号资源管理
      • api 管理
      • 独立对话页
      • 嵌入第三方web系统
      • 分段预览
      • 文档预览
      • 多轮检索
      • 上下文压缩
      • 支持自定义模型
      • 爬取网页数据
      • 隔离 Python 执行环境配置
      • 隔离 Python 执行器
      • 函数库与调用接口
      • Windows 与 Linux 部署
      • 离线运行向量模型
      • Milvus
      • 存储文件到云存储
      • 文档解析异步化
    • 62 · AI 搜索

      • 62_ai-search
      • ai-search 项目简介
      • ai-search 数据库文档
      • ai-search SearxNG 搜索引擎
      • ai-search Jina Reader API
      • ai-search Jina Search API
      • ai-search 搜索、重排与读取内容
      • ai-search PDF 文件处理
      • ai-search 推理问答
      • Google Custom Search JSON API
      • ai-search 意图识别
      • ai-search 问题重写
      • ai-search 系统 API 接口 WebSocket 版本
      • ai-search 搜索代码实现 WebSocket 版本
      • ai-search 生成建议问
      • ai-search 生成问题标题
      • ai-search 历史记录
      • Discover API
      • 翻译
      • Tavily Search API 文档
      • 对接 Tavily Search
      • 火山引擎 DeepSeek
      • 对接 火山引擎 DeepSeek
      • ai-search 搜索代码实现 SSE 版本
      • jar 包部署
      • Docker 部署
      • 爬取一个静态网站的所有数据
      • 网页数据预处理
      • 网页数据检索与问答流程整合
    • 63 · 语音 Agent

      • 63_voice-agent
      • 整合Gemini realtime模型
      • Voice Agent 前端接入接口文档
      • 整合千问realtime模型
      • 打断支持
      • 主动介入
      • eleven labs
      • 基于 tio-boot + ElevenLabs 构建实时语音 Agent(支持打断与主动介入)
    • 64 · AI Coding

      • 64_ai-coding
      • Cline 提示词
      • Cline 提示词-中文版本
    • 65 · AI Browser

      • deepseek-browser-use:从入门到源码
      • deepseek-browser-use:概念与学习路线
      • 安装、启动与健康检查
      • 第一个任务:打开页面、读取结果与关闭
      • 客户端:dsb 命令行与结构化留档
      • 统一命令接口与人机协作
      • 浏览器、profile 与登录态
      • 窗口尺寸与页面视口
      • 接入智能体:观察、执行与验证
      • 表单与多层弹窗排障:防止重复提交
      • 调用追踪、页面留档与文件上传
      • 站点配方、技能与异步作业
      • Windows OCR:本地图片与页面文字识别
      • 配置项与运维自省
      • 命令清单
      • 源码教程:从 HTTP 请求到命令执行
      • DOM 原理:前端如何生成可交互快照
      • DOM 原理:Java 模型与跨 Frame 索引
      • 正文提取与上层结构化处理
      • 源码教程:生命周期、导航与页签
      • 源码教程:DOM、页面状态与元素读取
      • 源码教程:点击、输入、键盘与鼠标
      • 源码教程:等待条件与 JavaScript 执行
      • 源码教程:文件上传、截图、PDF 与 OCR
      • 源码教程:Cookie、存储与页面设置
      • 源码教程:网络记录、请求拦截与控制台
      • 源码教程:原生对话框、DOM 弹窗与人机协作
      • 源码教程:批量、配方、后台作业与维护
      • 源码教程:Chrome 走 CDP 与 CDP 客户端
      • 请求响应关联与线程约束
      • DeepSeek Harness 插件开发入门:从入口到第一个工具
      • 开发 dsh-plugin-deepseek-browser-use:HTTP 客户端与基础工具
      • 开发 dsh-plugin-deepseek-browser-use:会话、作业、文件与图片
      • 把 dsh-plugin-deepseek-browser-use 构建并安装到 DeepSeek Harness
      • DeepSeek Harness 原生浏览器插件:安装、配置与使用
      • DeepSeek Harness 原生浏览器插件:源码、生命周期与测试
      • 后端自动管理:安装 Java 与 Git、更新源码、编译和启动
      • 页面正在导航与主 Frame 缺失:PAGE_NAVIGATING
      • dsb 客户端:Go 版本、多目标与后端服务管理
      • 可靠的数据采集:上下文校验、UTF-8 留档与证据口径
      • 浏览器 profile:列表、克隆与选择
  • 项目实战

    • 66 · java-uni-ai-server

      • 66_java-uni-ai-server
      • 语音合成系统
      • Fish.audio TTS 接口说明文档与 Java 客户端封装
      • 整合 fishaudio 到 java-uni-ai-server 项目
      • 待定
    • 67 · java-llm-proxy

      • 67_java-llm-proxy
      • 使用tio-boot搭建多模型LLM代理服务
    • 68 · java-kit-server

      • 68_java-kit-server
      • Java 执行 python 代码
      • 通过大模型执行 Python 代码
      • 执行 Python (Manim) 代码
      • 待定
      • 待定
      • 待定
      • 视频下载增加水印说明文档
    • 69 · tio-im

      • 69_tio-im
      • 通讯协议文档
      • ChatPacket.proto 文档
      • java protobuf
      • 数据表设计
      • 创建工程
      • 登录
      • 历史消息
      • 发消息
    • 70 · tio-mail-wing

      • 70_tio-mail-wing
      • tio-mail-wing简介
      • 任务1:实现POP3系统
      • 使用 getmail 验证 tio-mail-wing POP3 服务
      • 任务2:实现 SMTP 服务
      • 数据库初始化文档
      • 用户管理
      • 邮件管理
      • 任务3:实现 SMTP 服务 数据库版本
      • 任务4:实现 POP3 服务(数据库版本)
      • IMAP 协议
      • 拉取多封邮件
      • 任务5:实现 IMAP 服务(数据库版本)
      • IMAP实现讲解
      • IMAP 手动测试脚本
      • IMAP 认证机制
      • 主动推送
      • namesapce
      • CONDSTORE and QRESYNC
    • 71 · tio-mcp-server

      • 71_tio-mcp-server
      • 实现 MCP Server 开发指南
      • MCP 协议
      • /zh/71_tio-mcp-server/11.html
    • 72 · tio-log-server

      • 72_tio-log-server
      • 简介
      • 收集 docker 日志
      • 入库
    • 73 · tio-sip

      • 73_tio-sip
      • SIP Server 第一版原理说明
      • SIP Server 第一版实战
      • 一、Windows 平台测试
      • SIP Server 第二版实战
      • SIP Server 第三版实战
      • 性能优化
      • 基于 MediaProcessor 对接 Realtime 模型说明
      • 对接大语言模型
      • 支持 G722 宽带语音
      • G722编码和解码
      • 会话级采样率转换
      • 增加 9196 回声测试分机
      • 语音系统链路说明
      • 一、Gemini Realtime 的打断机制
    • 74 · tio-boot-admin

      • 74_tio-boot-admin
      • 入门指南:使用框架内置配置
      • 手动初始化数据库
      • 配置职责、生效条件与扩展边界
      • 整合数据库
      • 与前端集成
      • 文件上传
      • 网络请求
      • 单图片管理(只读模式)
      • 多图片管理
      • 布尔值管理
      • 字段联动
      • Word 管理
      • PDF 管理
      • 文章管理
      • 富文本编辑器
      • 整合 Enjoy 模版引擎
      • 历史可选方案:Token 存储与 Sa-Token
      • 业务 API 与 H5 / 小程序联调
      • 方法路由与业务鉴权
      • 整合 Redis
      • 整合 Elasticsearch
      • 后端开发规范:tio-boot、java-db 与 Kv
      • 多表实现文件数据存储
      • 受限事项与原操作闭环
      • 具名业务后台与受控命令集成
      • 固定用途查询、受控导出与删除证明
      • 登录与认证
    • 75 · 案例

      • 75_examples
      • 封装 IP 查询服务
      • tio-boot 案例 - 全局异常捕获与企业微信群通知
      • tio-boot 案例 - 文件上传和下载
      • tio-boot 案例 - 整合 ant design pro 增删改查
      • tio-boot 案例 - 流失响应
      • tio-boot 案例 - 增强检索
      • tio-boot 案例 - 整合 function call
      • tio-boot 案例 - 定时任务 监控 PostgreSQL、Redis 和 Elasticsearch
      • Tio-Boot 案例:使用 SQLite 整合到登录注册系统
      • tio-boot 案例 - 执行 shell 命令
      • /zh/75_examples/11.html
      • /zh/75_examples/12.html
      • /zh/75_examples/13.html
  • 性能、原理与源码

    • 76 · 性能测试

      • 76_performance
      • 压力测试 - tio-http-serer
      • 压力测试 - tio-boot
      • 压力测试 - tio-boot-native
      • 压力测试 - netty-boot
      • 性能测试对比
      • TechEmpower FrameworkBenchmarks
      • 压力测试 - tio-boot 12 C 32G
      • HTTP/1.1 Pipelining 性能测试报告
      • tio-boot vs Quarkus 性能对比测试报告
    • 77 · 原理

      • 77_internals
      • 生命周期
      • 请求处理流程
      • 重要的类
    • 78 · 源码解析

      • 78_source-code
      • 源码阅读入口
      • Swagger 整合到 Tio-Boot 中的指南
      • 启动与关闭生命周期
      • HTTP 请求分发与路由优先级
      • 高性能网络编程中的 ByteBuffer 分配与回收策略
      • TioBootServerHandler 源码解析
      • HTTP 请求与连接生命周期

数据库设计

  • 数据选型
  • 1. 创建用户、授予权限及安装 pgvector 插件
  • 2. 数据库设计
    • 2.1 设计规范
    • 2.2 全表总览
    • 2.3 各表结构及示例
  • 当前增量表结构及迁移
    • 增量脚本清单
    • 字段级变更
    • 向量空间一致性

数据选型

以下保留各表结构、字段解释和示例 SQL。当前部署使用 1024 维向量;历史基础表还需执行本文末尾的增量迁移。不要在已有业务库直接重建表。Windows 扩展安装见第 29 章,下面的 apt 命令仅适用于对应 Linux 环境。

  • 前端:使用 MossKB 前端
  • 后端:采用 Java 进行开发
  • 模型端:使用 OpenAI-4o-mini 系列模型
  • 数据端:使用 PostgreSQL + pgvector 存储向量数据

1. 创建用户、授予权限及安装 pgvector 插件

以下步骤演示了在 PostgreSQL 中创建新用户和数据库,授予必要权限,并安装及测试 pgvector 插件的过程。

1.1 切换到 PostgreSQL 用户

su - postgres

1.2 连接到 PostgreSQL

psql

1.3 创建数据库和用户

在 psql 提示符下执行以下命令,以创建名为 moss_kb 的数据库以及同名用户,并设置密码:

-- 创建数据库
CREATE DATABASE moss_kb;

-- 创建用户并设置密码
CREATE USER moss_kb WITH PASSWORD '<替换为自己的数据库密码>';

1.4 授予用户权限

-- 授予用户 moss_kb 对数据库 moss_kb 的所有权限
GRANT ALL PRIVILEGES ON DATABASE moss_kb TO moss_kb;

-- 切换到 moss_kb 数据库
\c moss_kb

-- 授予用户 moss_kb 在 public 模式下创建表的权限
GRANT ALL PRIVILEGES ON SCHEMA public TO moss_kb;

提示:在大多数情况下,无需更改 public 模式的所有者,除非有其他特殊需求。

1.5 安装并启用 pgvector 插件

  1. 安装插件(以基于 Debian/Ubuntu 的系统为例,需根据自身 PostgreSQL 版本调整命令):

    sudo apt-get update
    sudo apt-get install postgresql-14-pgvector
    
  2. 启用插件:

    -- 再次确保在 moss_kb 数据库下
    \c moss_kb
    
    CREATE EXTENSION IF NOT EXISTS vector;
    
  3. 验证是否成功启用:

    SELECT * FROM pg_extension WHERE extname = 'vector';
    

    如果能查询到返回结果,则表示扩展已启用。

1.6 测试 pgvector

在数据库中创建一个测试表,确认 vector 类型可用:

CREATE TABLE vector_test (
    id SERIAL PRIMARY KEY,
    v VECTOR(3)
);

如果能成功创建表,说明 pgvector 已正常启用。


2. 数据库设计

以下是本项目所需的主要数据表结构与示例创建脚本。

2.1 设计规范

  • 主键:统一使用 64 位的雪花 ID(Snowflake ID),BIGINT 类型。
  • 租户 ID:所有表均增加 tenant_id,默认为 0。
  • 逻辑删除:多数表均包含 deleted 字段,建议使用 0 表示正常,1 代表已删除。实际生产环境中也可采用其他标志位或多租户/软删除策略。
  • 时间戳:采用 TIMESTAMP WITH TIME ZONE 或 TIMESTAMP WITHOUT TIME ZONE 存储创建/更新时间,具体可视业务需求调整。
  • 向量列:embedding、title_embedding 等使用 VECTOR 类型且不写死维度,维度由 Embedding 模型决定(当前部署为 1024 维)。
  • 例外:后期增量表(moss_kb_chat_context、moss_kb_function_lib、moss_kb_model_provider、moss_kb_model_catalog)是平台/缓存/附属表,不带 tenant_id;其中 moss_kb_function_lib 的 deleted 为 BOOLEAN,与基础表的 SMALLINT 约定不同,各表下已单独标注。

2.2 全表总览

截至本文更新,moss_kb 库 public 模式共 32 张表,与 2.3 小节一一对应;另有 1 张(moss_kb_web_page_cache)仅被代码引用、尚未建表,见 表 28。

表名用途结构
moss_kb_user用户账号表 1
moss_kb_user_token用户令牌表 2
moss_kb_model用户模型实例与凭据表 3
moss_kb_application应用配置表 4
moss_kb_application_access_token应用对外访问令牌表 5
moss_kb_task文档处理任务进度表 6
moss_kb_file文件元信息表 7
moss_kb_dataset知识库(数据集)表 8
moss_kb_application_dataset_mapping应用与知识库关联表 9
moss_kb_document文档表 10
moss_kb_paragraph段落(向量检索单元)表 11
moss_kb_sentence句子(细粒度检索)表 12
moss_kb_problem问题表 13
moss_kb_problem_paragraph_mapping问题与段落关联表 14
moss_kb_embedding_cache向量缓存表 15
moss_kb_document_markdown_cache文档 Markdown 缓存表 16
moss_kb_document_markdown_page_cache分页 Markdown 缓存与 Token 统计表 17
moss_kb_application_chat会话表 18
moss_kb_application_chat_record会话问答记录表 19
moss_kb_application_temp_setting应用临时设置表 20
moss_kb_paragraph_summary_cache段落摘要缓存表 21
moss_kb_application_public_access_client公共访问客户端统计表 22
libre_office_converted_mapping文档转换映射表 23
moss_kb_chat_context会话摘要与压缩水位表 24
moss_kb_function_lib隔离执行的 Python 函数库表 25
moss_kb_model_provider模型平台目录表 26
moss_kb_model_catalog平台基础模型目录表 27
moss_kb_web_page_cache网页抓取缓存(未建表)表 28
moss_kb_document_split_task分段预览任务的进度与结果表 29

除上表之外,schema.sql 还建出 system_setting、moss_kb_user_api_key、moss_kb_application_api_key 等基础表,字段以 schema.sql 为准。


2.3 各表结构及示例

注意:以下脚本均采用默认的 public 模式。
编号仅用于顺序说明,实际建表顺序可根据依赖关系灵活调整。
本节已按实际库核对:public 模式共 32 张表,与 2.2 总览一一对应。


表 1:moss_kb_user

DROP TABLE IF EXISTS "public"."moss_kb_user";

CREATE TABLE "public"."moss_kb_user" (
  "id" BIGINT NOT NULL PRIMARY KEY,
  "email" VARCHAR,
  "phone" VARCHAR NOT NULL,
  "nick_name" VARCHAR NOT NULL,
  "username" VARCHAR NOT NULL,
  "password" VARCHAR NOT NULL,
  "role" VARCHAR NOT NULL,
  "is_active" BOOLEAN NOT NULL,
  "source" VARCHAR NOT NULL,
  "remark" VARCHAR(256),
  "creator" VARCHAR(64) DEFAULT '',
  "create_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  "updater" VARCHAR(64) DEFAULT '',
  "update_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  "deleted" SMALLINT DEFAULT 0,
  "tenant_id" BIGINT NOT NULL DEFAULT 0
);

-- 创建索引
CREATE INDEX "user_email_index_like" ON "public"."moss_kb_user" USING btree (
  "email" varchar_pattern_ops
);
CREATE INDEX "user_username_index_like" ON "public"."moss_kb_user" USING btree (
  "username" varchar_pattern_ops
);

-- 插入初始记录(管理员账户)
INSERT INTO "public"."moss_kb_user"
VALUES (
  1,
  '',
  '',
  '系统管理员',
  'admin',
  '608fd4367502762e76a77ee348c9f1c7',
  'ADMIN',
  TRUE,
  'LOCAL',
  '',
  '',
  CURRENT_TIMESTAMP,
  '',
  CURRENT_TIMESTAMP,
  0,
  0
);

-- 备注:默认密码 “Kimi@2024” 的 MD5(或其他加密形式)

用途

  • 存储用户账号信息:邮箱、电话、昵称、用户名、密码、角色、是否激活、备注等。

当前增量:007-user-sessions.sql 追加 token_version BIGINT NOT NULL DEFAULT 0。登录签发的令牌携带该值,改密、重置或停用账号时服务端自增,旧令牌立即失效(见第 16 章、第 34 章)。


表 2:moss_kb_user_token

DROP TABLE IF EXISTS "public"."moss_kb_user_token";

CREATE TABLE "public"."moss_kb_user_token" (
  "id" BIGINT NOT NULL PRIMARY KEY,
  "token" VARCHAR NOT NULL,
  "remark" VARCHAR(256),
  "creator" VARCHAR(64) DEFAULT '',
  "create_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  "updater" VARCHAR(64) DEFAULT '',
  "update_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  "deleted" SMALLINT DEFAULT 0,
  "tenant_id" BIGINT NOT NULL DEFAULT 0
);

用途

  • 存储用户认证令牌、令牌备注等信息,用于管理用户登录、会话等。

表 3:moss_kb_model

DROP TABLE IF EXISTS "public"."moss_kb_model";

CREATE TABLE "public"."moss_kb_model" (
  "id" BIGINT NOT NULL PRIMARY KEY,
  "name" VARCHAR NOT NULL,
  "model_type" VARCHAR NOT NULL,
  "model_name" VARCHAR NOT NULL,
  "provider" VARCHAR NOT NULL,
  "credential" VARCHAR NOT NULL,
  "user_id" BIGINT NOT NULL,
  "meta" JSONB,
  "status" VARCHAR,
  "permission_type" VARCHAR NOT NULL,
  "remark" VARCHAR(256),
  "creator" VARCHAR(64) DEFAULT '',
  "create_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  "updater" VARCHAR(64) DEFAULT '',
  "update_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  "deleted" SMALLINT DEFAULT 0,
  "tenant_id" BIGINT NOT NULL DEFAULT 0
);

CREATE INDEX "idx_user_id" ON "public"."moss_kb_model" USING btree ("user_id");

用途

  • 存储大模型的配置信息,包含模型名称、类型、提供方、密钥/凭证、元数据、状态、权限类型、归属用户等。

当前增量:008-model-catalog.sql 追加 model_params_form JSONB NOT NULL DEFAULT '[]',用于按平台表单声明实例参数;密钥只存于本表 credential,平台表不保存用户 API Key(见第 35 章)。


表 4:moss_kb_application

DROP TABLE IF EXISTS "public"."moss_kb_application";

CREATE TABLE "public"."moss_kb_application" (
  "id" BIGINT PRIMARY KEY,
  "code" INT,
  "course_name" VARCHAR,
  "owner_name" VARCHAR,
  "state" INT,
  "name" VARCHAR NOT NULL,
  "desc" VARCHAR NOT NULL,
  "prompt" VARCHAR,
  "prologue" VARCHAR NOT NULL,
  "dialogue_number" INT NOT NULL,
  "dataset_setting" JSONB NOT NULL,
  "model_setting" JSONB NOT NULL,
  "problem_optimization" BOOLEAN NOT NULL,
  "model_id" BIGINT,
  "user_id" BIGINT NOT NULL,
  "icon" VARCHAR,
  "type" VARCHAR NOT NULL,
  "work_flow" JSONB,
  "show_source" BOOLEAN DEFAULT TRUE,
  "multiple_rounds_dialogue" BOOLEAN DEFAULT TRUE,
  "model_params_setting" JSONB NOT NULL,
  "stt_model_id" BIGINT,
  "stt_model_enable" BOOLEAN NOT NULL,
  "tts_model_id" BIGINT,
  "tts_model_enable" BOOLEAN NOT NULL,
  "tts_type" VARCHAR NOT NULL,
  "problem_optimization_prompt" VARCHAR,
  "tts_model_params_setting" JSONB,
  "clean_time" INT,
  "remark" VARCHAR(256),
  "creator" VARCHAR(64) DEFAULT '',
  "create_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  "updater" VARCHAR(64) DEFAULT '',
  "update_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  "deleted" SMALLINT DEFAULT 0,
  "tenant_id" BIGINT NOT NULL DEFAULT 0
);

CREATE INDEX "application_model_id" ON "public"."moss_kb_application" USING btree ("model_id");
CREATE INDEX "application_stt_model_id" ON "public"."moss_kb_application" USING btree ("stt_model_id");
CREATE INDEX "application_tts_model_id" ON "public"."moss_kb_application" USING btree ("tts_model_id");
CREATE INDEX "application_user_id" ON "public"."moss_kb_application" USING btree ("user_id");

用途

  • 存储各类知识库应用的信息,包括前端配置、提示语、对话数量、关联模型、关联用户、语音识别/合成等配置。

表 5:moss_kb_application_access_token

DROP TABLE IF EXISTS "public"."moss_kb_application_access_token";

CREATE TABLE "public"."moss_kb_application_access_token" (
  "application_id" BIGINT PRIMARY KEY,
  "access_token" BIGINT NOT NULL,
  "is_active" BOOLEAN NOT NULL,
  "access_num" INT NOT NULL,
  "white_active" BOOLEAN NOT NULL,
  "white_list" VARCHAR[] NOT NULL,
  "show_source" BOOLEAN NOT NULL,
  "language" VARCHAR(16),
  "remark" VARCHAR(256),
  "creator" VARCHAR(64) DEFAULT '',
  "create_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  "updater" VARCHAR(64) DEFAULT '',
  "update_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  "deleted" SMALLINT DEFAULT 0,
  "tenant_id" BIGINT NOT NULL DEFAULT 0
);

CREATE INDEX "moss_kb_application_access_token_access_token" ON "public"."moss_kb_application_access_token" USING btree ("access_token");

用途

  • 应用对外提供的访问令牌管理表,支持访问次数统计、白名单配置、是否显示内容来源等。
  • language 为该应用公开分享页的界面语言,取值 en-US、zh-CN、zh-Hant,为空表示跟随访客浏览器语言,详见独立对话页。

表 6:moss_kb_task

DROP TABLE IF EXISTS "public"."moss_kb_task";

CREATE TABLE "public"."moss_kb_task" (
  "id" BIGINT NOT NULL PRIMARY KEY,
  "file_id" BIGINT,
  "file_name" VARCHAR NOT NULL,
  "file_size" BIGINT,
  "dataset_id" BIGINT NOT NULL,
  "document_id" BIGINT,
  "progress" SMALLINT DEFAULT 0,
  "status" VARCHAR NOT NULL,
  "creator" VARCHAR(64) DEFAULT '',
  "create_time" TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  "updater" VARCHAR(64) DEFAULT '',
  "update_time" TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  "deleted" SMALLINT NOT NULL DEFAULT 0,
  "tenant_id" BIGINT NOT NULL DEFAULT 0
);

用途

  • 存储文件处理/任务相关的进度信息,如进度、状态、关联的数据集与文档等。

表 7:moss_kb_file

DROP TABLE IF EXISTS "public"."moss_kb_file";

CREATE TABLE "public"."moss_kb_file" (
  "id" BIGINT PRIMARY KEY,
  "md5" VARCHAR(32) NOT NULL,
  "filename" VARCHAR(64) NOT NULL,
  "file_size" BIGINT NOT NULL,
  "user_id" BIGINT,
  "platform" VARCHAR(64) NOT NULL,
  "region_name" VARCHAR(32),
  "bucket_name" VARCHAR(64) NOT NULL,
  "file_id" VARCHAR(64),
  "target_name" VARCHAR(255) NOT NULL,
  "tags" JSON,
  "creator" VARCHAR(64) DEFAULT '',
  "create_time" TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  "updater" VARCHAR(64) DEFAULT '',
  "update_time" TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  "deleted" SMALLINT NOT NULL DEFAULT 0,
  "tenant_id" BIGINT NOT NULL DEFAULT 0
);

用途

  • 存储文件的基础信息(MD5 值、大小、文件名、上传位置、存储路径等),方便后续在对象存储或本地文件系统中查找。

当前增量:003-filename-capacity.sql 将 filename 由 VARCHAR(64) 改为 TEXT,以容纳法规、公告类完整长文件名。


表 8:moss_kb_dataset

DROP TABLE IF EXISTS "public"."moss_kb_dataset";

CREATE TABLE "public"."moss_kb_dataset" (
  "id" BIGINT PRIMARY KEY,
  "name" VARCHAR NOT NULL,
  "desc" VARCHAR,
  "type" VARCHAR,
  "embedding_mode_id" BIGINT,
  "llm_mode_id" BIGINT,
  "meta" JSONB,
  "user_id" BIGINT,
  "remark" VARCHAR(256),
  "creator" VARCHAR(64) DEFAULT '',
  "create_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  "updater" VARCHAR(64) DEFAULT '',
  "update_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  "deleted" SMALLINT DEFAULT 0,
  "tenant_id" BIGINT NOT NULL DEFAULT 0
);

用途

  • 用于管理各数据集元信息:名称、描述、类型、所使用的向量/Embedding 配置、归属用户等。

当前增量:002-gitee-models.sql 追加 llm_mode_id BIGINT(对话模型),与 embedding_mode_id(向量模型)成对使用。


表 9:moss_kb_application_dataset_mapping

DROP TABLE IF EXISTS "public"."moss_kb_application_dataset_mapping";

CREATE TABLE "public"."moss_kb_application_dataset_mapping" (
  "id" BIGINT PRIMARY KEY,
  "application_id" BIGINT NOT NULL,
  "dataset_id" BIGINT NOT NULL
);

用途

  • 建立应用与数据集之间的关联关系:即一个应用可以关联多个数据集。

表 10:moss_kb_document

DROP TABLE IF EXISTS "public"."moss_kb_document";

CREATE TABLE "public"."moss_kb_document" (
  "id" BIGINT NOT NULL PRIMARY KEY,
  "file_id" BIGINT,
  "user_id" BIGINT,
  "title" VARCHAR,
  "name" VARCHAR NOT NULL,
  "type" VARCHAR NOT NULL,
  "url" VARCHAR,
  "content" text,
  "char_length" INT,
  "status" VARCHAR,
  "is_active" BOOLEAN,
  "meta" JSONB,
  "dataset_id" BIGINT NOT NULL,
  "hit_handling_method" VARCHAR,
  "directly_return_similarity" FLOAT8,
  "paragraph_count" INT,
  "files" JSON,
  "creator" VARCHAR(64) DEFAULT '',
  "create_time" TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  "updater" VARCHAR(64) DEFAULT '',
  "update_time" TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  "deleted" SMALLINT NOT NULL DEFAULT 0,
  "tenant_id" BIGINT NOT NULL DEFAULT 0
);

用途

  • 管理文档的基础信息(文件关联、标题、字符数、索引状态等),以及分段方法、相似度直接返回的阈值或配置等。

状态值示例
由于此处为 VARCHAR 类型,常见做法是存储数字或关键字字符串。例如:

  • "0":索引中
  • "1":处理完成
  • "2":识别中
  • "3":排队中
  • "4":生成问题中

具体可根据业务场景进行约定。


表 11:moss_kb_paragraph

DROP TABLE IF EXISTS "public"."moss_kb_paragraph";

CREATE TABLE "public"."moss_kb_paragraph" (
  "id" BIGINT PRIMARY KEY,
  "source_id" BIGINT,
  "source_type" VARCHAR,
  "title" VARCHAR,
  "content" VARCHAR NOT NULL,
  "md5" VARCHAR NOT NULL,
  "status" VARCHAR,
  "hit_num" INT,
  "is_active" BOOLEAN,
  "dataset_id" BIGINT NOT NULL,
  "document_id" BIGINT NOT NULL,
  "embedding" VECTOR,
  "title_embedding" VECTOR,
  "meta" JSONB,
  "search_vector" TSVECTOR,
  "creator" VARCHAR(64) DEFAULT '',
  "create_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  "updater" VARCHAR(64) DEFAULT '',
  "update_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  "deleted" SMALLINT DEFAULT 0,
  "tenant_id" BIGINT NOT NULL DEFAULT 0
);

用途

  • 存储文档的“段落”级别信息,包含文本内容、向量表示(embedding)、TS 向量(search_vector)等,便于向量搜索或全文检索。

向量维度:库中 embedding、title_embedding 为不带维度约束的 VECTOR,维度由所选 Embedding 模型决定,当前部署实际写入 1024 维(Qwen3-Embedding-8B)。表 12 的 embedding 同理。不同维度的向量不能混放,切换模型后需重新向量化,见「当前增量表结构及迁移」。


表 12:moss_kb_sentence

DROP TABLE IF EXISTS "public"."moss_kb_sentence";

CREATE TABLE "public"."moss_kb_sentence" (
  "id" BIGINT PRIMARY KEY,
  "type" INT,
  "content" VARCHAR NOT NULL,
  "md5" VARCHAR NOT NULL,
  "hit_num" INT NOT NULL,
  "dataset_id" BIGINT NOT NULL,
  "document_id" BIGINT NOT NULL,
  "paragraph_id" BIGINT NOT NULL,
  "embedding" VECTOR,
  "meta" JSONB,
  "search_vector" TSVECTOR,
  "creator" VARCHAR(64) DEFAULT '',
  "create_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  "updater" VARCHAR(64) DEFAULT '',
  "update_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  "deleted" SMALLINT DEFAULT 0,
  "tenant_id" BIGINT NOT NULL DEFAULT 0
);

用途

  • 按“句子”维度拆分文档内容,通常在需要更精细的向量检索场景下使用。

type 字段示例

  • 1:来自正文
  • 2:段落摘要

表 13:moss_kb_problem

DROP TABLE IF EXISTS "public"."moss_kb_problem";

CREATE TABLE "public"."moss_kb_problem" (
  "id" BIGINT PRIMARY KEY,
  "content" VARCHAR NOT NULL,
  "hit_num" INT NOT NULL,
  "dataset_id" BIGINT NOT NULL,
  "creator" VARCHAR(64) DEFAULT '',
  "create_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  "updater" VARCHAR(64) DEFAULT '',
  "update_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  "deleted" SMALLINT DEFAULT 0,
  "tenant_id" BIGINT NOT NULL DEFAULT 0
);

CREATE INDEX "moss_kb_problem_dataset_id" ON "public"."moss_kb_problem" USING btree ("dataset_id");

用途

  • 存储常见或已识别的问题,便于后续做 FAQ 或查询等操作。

表 14:moss_kb_problem_paragraph_mapping

DROP TABLE IF EXISTS "public"."moss_kb_problem_paragraph_mapping";

CREATE TABLE "public"."moss_kb_problem_paragraph_mapping" (
  "id" BIGINT PRIMARY KEY,
  "dataset_id" BIGINT NOT NULL,
  "document_id" BIGINT NOT NULL,
  "paragraph_id" BIGINT NOT NULL,
  "problem_id" BIGINT NOT NULL,
  "creator" VARCHAR(64) DEFAULT '',
  "create_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  "updater" VARCHAR(64) DEFAULT '',
  "update_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  "deleted" SMALLINT DEFAULT 0,
  "tenant_id" BIGINT NOT NULL DEFAULT 0
);

CREATE INDEX "moss_kb_problem_paragraph_mapping_dataset_id"   ON "public"."moss_kb_problem_paragraph_mapping" USING btree ("dataset_id");
CREATE INDEX "moss_kb_problem_paragraph_mapping_document_id"  ON "public"."moss_kb_problem_paragraph_mapping" USING btree ("document_id");
CREATE INDEX "moss_kb_problem_paragraph_mapping_paragraph_id" ON "public"."moss_kb_problem_paragraph_mapping" USING btree ("paragraph_id");
CREATE INDEX "moss_kb_problem_paragraph_mapping_problem_id"   ON "public"."moss_kb_problem_paragraph_mapping" USING btree ("problem_id");

用途

  • 问题与段落的多对多关联,便于快速检索“某个问题可命中到哪些段落”的信息。

表 15:moss_kb_embedding_cache

DROP TABLE IF EXISTS "public"."moss_kb_embedding_cache";

CREATE TABLE "public"."moss_kb_embedding_cache" (
  "id" BIGINT PRIMARY KEY,
  "t" TEXT,
  "m" VARCHAR,
  "v" VECTOR,
  "md5" VARCHAR
);

CREATE INDEX "idx_moss_kb_embedding_cache_md5" ON "public"."moss_kb_embedding_cache" USING btree ("md5");
CREATE INDEX "idx_moss_kb_embedding_cache_md5_m" ON "public"."moss_kb_embedding_cache" USING btree ("md5", "m");

用途

  • 缓存文本与其向量表示的映射,以免重复向外部接口请求 Embedding。

表 16:moss_kb_document_markdown_cache

DROP TABLE IF EXISTS "public"."moss_kb_document_markdown_cache";

CREATE TABLE "public"."moss_kb_document_markdown_cache" (
  "id" VARCHAR PRIMARY KEY,
  "target" VARCHAR,
  "content" TEXT
);

用途

  • 存储文档转换为 Markdown 后的缓存结果,可用于预览或快速查阅。

表 17:moss_kb_document_markdown_page_cache

DROP TABLE IF EXISTS "public"."moss_kb_document_markdown_page_cache";

CREATE TABLE "public"."moss_kb_document_markdown_page_cache" (
  "id" VARCHAR PRIMARY KEY,
  "target" VARCHAR,
  "content" TEXT,
  "elapsed" BIGINT,
  "model" VARCHAR,
  "system_fingerprint" VARCHAR,
  "completion_tokens" INT,
  "prompt_tokens" INT,
  "total_tokens" INT
);

用途

  • 针对分页级别做 Markdown 缓存,以及与大模型的调用信息统计(tokens 等)。

表 18:moss_kb_application_chat

DROP TABLE IF EXISTS "public"."moss_kb_application_chat";

CREATE TABLE "public"."moss_kb_application_chat" (
  "id" BIGINT PRIMARY KEY,
  "abstract" VARCHAR,
  "application_id" BIGINT NOT NULL,
  "client_id" BIGINT,
  "chat_type" INT NOT NULL,
  "is_deleted" BOOLEAN NOT NULL DEFAULT FALSE,
  "creator" VARCHAR(64) DEFAULT '',
  "create_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  "updater" VARCHAR(64) DEFAULT '',
  "update_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  "deleted" SMALLINT DEFAULT 0,
  "tenant_id" BIGINT NOT NULL DEFAULT 0
);

CREATE INDEX "moss_kb_application_chat_application_id" ON "public"."moss_kb_application_chat" USING btree ("application_id");

用途

  • 存储应用的会话信息,区分调试会话、普通会话等。

chat_type

  • 0:普通会话
  • 1:调试会话

表 19:moss_kb_application_chat_record

DROP TABLE IF EXISTS "public"."moss_kb_application_chat_record";

CREATE TABLE "public"."moss_kb_application_chat_record" (
  "id" BIGINT PRIMARY KEY,
  "vote_status" VARCHAR NOT NULL DEFAULT '-1',
  "problem_text" VARCHAR NOT NULL,
  "answer_text" VARCHAR,
  "message_tokens" INT NOT NULL,
  "answer_tokens" INT,
  "const" INT NOT NULL DEFAULT 0,
  "details" JSONB,
  "improve_paragraph_id_list" BIGINT[],
  "run_time" FLOAT8,
  "index" INT,
  "chat_id" BIGINT NOT NULL,
  "creator" VARCHAR(64) DEFAULT '',
  "create_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  "updater" VARCHAR(64) DEFAULT '',
  "update_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  "deleted" SMALLINT DEFAULT 0,
  "tenant_id" BIGINT NOT NULL DEFAULT 0
);

CREATE INDEX "moss_kb_application_chat_record_chat_id" ON "public"."moss_kb_application_chat_record" USING btree ("chat_id");

用途

  • 存储具体的聊天记录内容、投票状态、Token 消耗情况等。

表 20:moss_kb_application_temp_setting

DROP TABLE IF EXISTS "public"."moss_kb_application_temp_setting";

CREATE TABLE "public"."moss_kb_application_temp_setting" (
  "id" BIGINT PRIMARY KEY,
  "setting" JSONB
);

用途

  • 临时存储应用的一些推理、配置等 JSON 格式数据。

表 21:moss_kb_paragraph_summary_cache

DROP TABLE IF EXISTS "public"."moss_kb_paragraph_summary_cache";

CREATE TABLE "public"."moss_kb_paragraph_summary_cache" (
  "id" BIGINT PRIMARY KEY,
  "md5" VARCHAR,
  "src" TEXT,
  "content" TEXT,
  "elapsed" BIGINT,
  "model" VARCHAR,
  "system_fingerprint" VARCHAR,
  "completion_tokens" INT,
  "prompt_tokens" INT,
  "total_tokens" INT
);

用途

  • 缓存段落摘要信息,包括原文 MD5、摘要内容、模型、耗时、Token 统计等。

表 22:moss_kb_application_public_access_client

DROP TABLE IF EXISTS "public"."moss_kb_application_public_access_client";

CREATE TABLE "public"."moss_kb_application_public_access_client" (
  "id" BIGINT PRIMARY KEY,
  "access_num" INT NOT NULL,
  "intraday_access_num" INT NOT NULL,
  "application_id" BIGINT NOT NULL,
  "client_id" BIGINT,
  "creator" VARCHAR(64) DEFAULT '',
  "create_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  "updater" VARCHAR(64) DEFAULT '',
  "update_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  "deleted" SMALLINT DEFAULT 0,
  "tenant_id" BIGINT NOT NULL DEFAULT 0
);

用途

  • 公共访问客户端统计表,记录某应用被匿名/公共访问的次数、当日访问量等。

表 23:libre_office_converted_mapping

原脚本中名为 libre_office_converted_maping,存在拼写错误,建议修改为 libre_office_converted_mapping。

DROP TABLE IF EXISTS "public"."libre_office_converted_mapping";

CREATE TABLE "public"."libre_office_converted_mapping" (
  "id" BIGINT NOT NULL PRIMARY KEY,
  "input_file_id" BIGINT,
  "input_md5" VARCHAR,
  "output_file_id" BIGINT,
  "output_md5" VARCHAR,
  "remark" VARCHAR(256),
  "creator" VARCHAR(64) DEFAULT '',
  "create_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  "updater" VARCHAR(64) DEFAULT '',
  "update_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  "deleted" SMALLINT DEFAULT 0,
  "tenant_id" BIGINT NOT NULL DEFAULT 0
);

表 24:moss_kb_chat_context

CREATE TABLE IF NOT EXISTS moss_kb_chat_context (
  chat_id BIGINT PRIMARY KEY REFERENCES moss_kb_application_chat(id) ON DELETE CASCADE,
  summary TEXT NOT NULL DEFAULT '',
  through_record_id BIGINT NOT NULL DEFAULT 0,
  compacted_rounds INTEGER NOT NULL DEFAULT 0,
  revision INTEGER NOT NULL DEFAULT 0,
  update_time TIMESTAMP NOT NULL DEFAULT now()
);

CREATE INDEX IF NOT EXISTS idx_chat_record_context
  ON moss_kb_application_chat_record (chat_id, id) WHERE answer_text IS NOT NULL;

用途

  • 每个会话一行,保存上下文压缩后的摘要与水位:summary 是压缩摘要,through_record_id 是已并入摘要的最后一条 moss_kb_application_chat_record.id,compacted_rounds 是已压缩轮数。
  • revision 用于乐观并发控制,写入时带上读取到的 revision,避免并发压缩互相覆盖。
  • chat_id 既是主键也是外键,会话删除时级联删除;本表不带 tenant_id、deleted。实现见第 32 章。

表 25:moss_kb_function_lib

CREATE TABLE IF NOT EXISTS moss_kb_function_lib (
  id BIGINT PRIMARY KEY, user_id BIGINT NOT NULL,
  name VARCHAR(128) NOT NULL, "desc" TEXT NOT NULL DEFAULT '', code TEXT NOT NULL,
  input_field_list JSONB NOT NULL DEFAULT '[]', init_field_list JSONB NOT NULL DEFAULT '[]',
  init_params JSONB NOT NULL DEFAULT '{}', permission_type VARCHAR(16) NOT NULL DEFAULT 'PRIVATE',
  is_active BOOLEAN NOT NULL DEFAULT true, deleted BOOLEAN NOT NULL DEFAULT false,
  create_time TIMESTAMP NOT NULL DEFAULT now(), update_time TIMESTAMP NOT NULL DEFAULT now()
);

CREATE INDEX IF NOT EXISTS idx_function_owner ON moss_kb_function_lib (user_id) WHERE deleted = false;

用途

  • 存放可隔离执行的 Python 函数:code 是函数源码,input_field_list/init_field_list 是入参与初始化字段表单,init_params 是初始参数。
  • permission_type 取 PRIVATE/PUBLIC,PUBLIC 函数可被其他用户引用。
  • 注意:deleted 为 BOOLEAN 且不带 tenant_id,与基础表约定不同(见 2.1)。执行沙箱见第 32 章。

表 26:moss_kb_model_provider

CREATE TABLE IF NOT EXISTS moss_kb_model_provider (
  provider VARCHAR(128) PRIMARY KEY,
  name VARCHAR(200) NOT NULL,
  icon TEXT NOT NULL DEFAULT '',
  api_base TEXT NOT NULL DEFAULT '',
  protocol VARCHAR(40) NOT NULL DEFAULT 'OPENAI_COMPATIBLE',
  model_types JSONB NOT NULL,
  credential_form JSONB NOT NULL,
  params_form JSONB NOT NULL,
  enabled BOOLEAN NOT NULL DEFAULT true,
  sort_order INTEGER NOT NULL DEFAULT 0,
  updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
);

用途

  • 模型平台目录:以 provider 为主键描述一个平台,api_base、protocol 给出接入方式,model_types、credential_form、params_form 驱动前端表单。
  • 本表不保存用户 API Key,凭据只存于 moss_kb_model.credential。目录更新不需要重新编译,见第 35 章。

表 27:moss_kb_model_catalog

CREATE TABLE IF NOT EXISTS moss_kb_model_catalog (
  provider VARCHAR(128) REFERENCES moss_kb_model_provider(provider),
  model_type VARCHAR(30) NOT NULL,
  model_id VARCHAR(256) NOT NULL,
  description TEXT,
  source TEXT NOT NULL DEFAULT 'seed',
  enabled BOOLEAN NOT NULL DEFAULT true,
  updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
  PRIMARY KEY (provider, model_type, model_id)
);

用途

  • 平台下的基础模型清单,供新增模型实例时下拉选择;source 区分内置(seed)与自定义登记。
  • 联合主键 (provider, model_type, model_id),provider 外键指向表 26。快照数据由 009-model-catalog-snapshot.sql 登记,见第 35 章。

表 28:moss_kb_web_page_cache(⚠ 代码引用,库中尚未创建)

该表目前不在任何初始化脚本中,实际库也不存在。PlaywrightService 读写的是 web_page_cache(没有 moss_kb_ 前缀),而 SchduleTaskPerHour 的定时清理语句写的是 moss_kb_web_page_cache,两处命名不一致:开启网页抓取(kb.playwright.enable=true)并走到缓存分支后,其中一处必然报“表不存在”。建议统一为下表名称,并同步修改 PlaywrightService.cache_table_name。

CREATE TABLE IF NOT EXISTS moss_kb_web_page_cache (
  id BIGINT PRIMARY KEY,
  url TEXT NOT NULL,
  text TEXT,
  html TEXT,
  create_time TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP
);

CREATE INDEX IF NOT EXISTS idx_web_page_cache_url ON moss_kb_web_page_cache ("url");

用途

  • 缓存 Playwright 抓取到的网页正文(text)与原始 HTML(html),按 url 去重,避免重复抓取;SchduleTaskPerHour 每小时清理一天前的记录。
  • 如需额外防止并发重复写入,可把 url 索引改为唯一索引;若沿用无前缀的 web_page_cache,则必须同步修改定时清理语句,两种命名只能保留一种。

表 29:moss_kb_document_split_task

CREATE TABLE IF NOT EXISTS "public"."moss_kb_document_split_task" (
  "id" BIGINT NOT NULL PRIMARY KEY,
  "user_id" BIGINT,
  "file_id" BIGINT,
  "file_name" VARCHAR NOT NULL,
  "file_size" BIGINT,
  "status" VARCHAR(16) NOT NULL DEFAULT 'running',
  "progress" SMALLINT NOT NULL DEFAULT 0,
  "total" INT NOT NULL DEFAULT 0,
  "result" JSONB,
  "error_message" TEXT,
  "creator" VARCHAR(64) DEFAULT '',
  "create_time" TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  "updater" VARCHAR(64) DEFAULT '',
  "update_time" TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  "deleted" SMALLINT NOT NULL DEFAULT 0,
  "tenant_id" BIGINT NOT NULL DEFAULT 0
);

CREATE INDEX IF NOT EXISTS "moss_kb_document_split_task_user_id"
  ON "public"."moss_kb_document_split_task" USING btree ("user_id");

用途

  • 分段预览任务:上传接口保存文件后建一行并立刻返回任务 ID,解析在后台线程里逐页推进,前端按固定间隔轮询本表取进度或最终分段。
  • status 取 running、success、failed;progress 是已完成百分比,total 是总页数;result 保存成功后前端要用的分段列表,error_message 保存失败原因。
  • 查询按 id 与 user_id 一起过滤,任务只对创建者可见。
  • 本表只承载“预览中的中间状态”,确认后的分段写入 moss_kb_paragraph 等正规表;预览结果不应被当成已入库的知识。实现见第 42 章。

当前增量表结构及迁移

保留上文基础表和字段说明。当前程序通过 scripts/Initialize-Database.ps1 顺序执行初始化及增量脚本。IF NOT EXISTS 不会自动改变旧列类型;旧向量空间与新模型不能混用。表 24–27 就是这些脚本建出的表,本节给出脚本清单与字段级变更。

.\scripts\Initialize-Database.ps1 -PostgresBin '<PostgreSQL安装目录>\bin'

增量脚本清单

脚本作用关联对象
init-db.sql建基础表及索引,写入管理员账号表 1–23
002-gitee-models.sql写入默认 Gitee 平台模型 1001/1002moss_kb_model、moss_kb_dataset.llm_mode_id
003-filename-capacity.sql放宽文件名长度moss_kb_file.filename
004-keyword-search.sql安装 pg_trgm,支撑模糊/关键词检索扩展,非表
005-agent-context.sql建会话摘要与压缩水位表表 24
006-python-functions.sql建隔离执行的函数库表表 25
007-user-sessions.sql令牌版本,用于让旧令牌失效moss_kb_user.token_version
008-model-catalog.sql建平台与模型目录表并初始化表单表 26、表 27、moss_kb_model.model_params_form
009-model-catalog-snapshot.sql登记模型目录快照数据表 27 的数据

字段级变更

基础建表脚本不含下列列,历史库需按顺序执行。ADD COLUMN IF NOT EXISTS 可重复执行,但不会改变已存在列的类型,ALTER COLUMN ... TYPE 必须显式执行:

ALTER TABLE moss_kb_user    ADD COLUMN IF NOT EXISTS token_version BIGINT NOT NULL DEFAULT 0;
ALTER TABLE moss_kb_dataset ADD COLUMN IF NOT EXISTS llm_mode_id BIGINT;
ALTER TABLE moss_kb_model   ADD COLUMN IF NOT EXISTS model_params_form JSONB NOT NULL DEFAULT '[]';
ALTER TABLE moss_kb_file    ALTER COLUMN filename TYPE TEXT;
CREATE EXTENSION IF NOT EXISTS pg_trgm;

向量空间一致性

切换 Embedding 模型时,moss_kb_embedding_cache 与 moss_kb_paragraph、moss_kb_sentence 中的旧向量维度与新模型不一致,检索会直接报维度错误。此时不能只改模型 ID,需要先清空缓存并对文档重新向量化。

平台表不保存用户 API Key;凭据由用户模型实例管理。008-model-catalog.sql 还初始化平台与表单,009-model-catalog-snapshot.sql 登记模型目录快照。目录更新不需要重新编译,完整接口及数据关系见第 35 章。

Edit this page
Last Updated: 10/12/26, 3:25 AM
Contributors: litongjava
Prev
学术论文
Next
用户登录实现