概览
MaxKB 通过模块化的检索增强生成(RAG)引擎,高效地处理大规模文档集合,并实现智能生成。其核心优势在于结合了自动文档分段、基于向量的检索、上下文组装和大规模语言模型生成。MaxKB 支持本地模型存储,并可与各种外部向量数据库集成,从而在准确度、性能和成本之间实现灵活的平衡。
简介
RAG 技术首先从知识库中检索相关内容,然后将这些结果作为上下文输入到生成模型中,显著提高了响应的准确性和可靠性。作为一款开源的企业级 AI 助手,MaxKB 具备全面的 RAG 流水线,适用于客户服务、内部知识管理、学术研究等各种场景。
RAG 引擎核心架构
文档分段与预处理
-
分词和分块 : 使用高效的分词器处理原始文档,并根据预定义的长度阈值对其进行分块,确保每个文档片段既不过长(导致截断)也不过短(信息不足)。
-
嵌入生成 : 通过调用嵌入模型(如 DeepSeek、moka-ai/text2vec 等)为每个文档片段生成向量表示,并根据需要将存储格式设置为 float32 或 float16。
基于向量的检索
-
相似性搜索 : 基于余弦相似度或点积计算快速定位向量存储中最相关的 Top-k 文档片段,满足实时要求。
-
批量查询 : 支持批量向量检索(批量查询)以减少多次网络交互并提高吞吐量。
增强生成
-
提示组装 : 根据预定义的模板将检索到的文档片段组合到提示中,形成一个全面的上下文。
-
参数调优 : 提供对 Top-k、Top-p、温度、生成长度以及其他参数的配置选项,灵活控制响应的准确性和多样性。
向量存储层
本地模型存储
默认情况下,MaxKB 将向量模型和生成模型的二进制文件放置在 /opt/maxkb/model
目录中,并在启动时自动加载,支持动态模型切换和版本回滚。
外部向量数据库集成
通过 LangChain 的 VectorStore
接口,MaxKB 平滑地连接到像 pgvector、Milvus 和 Elasticsearch 这样的向量数据库,适应大规模和高并发场景。
性能优化
-
浮点压缩 : 可以将 float32 向量压缩为 float16,以减少存储和传输成本,同时保持检索精度。
-
缓存机制 : 实现了对频繁查询结果的内存缓存,减少后端访问频率,显著降低延迟。
-
索引预热 : 在系统启动或非高峰时段预热关键索引数据,以确保在高峰时段获得最佳查询性能。
安全与多租户
MaxKB 提供基于角色的访问控制(RBAC),结合 Kubernetes 命名空间隔离和网络策略,确保在多租户环境中实现数据隔离和安全合规。
总结
MaxKB 的 RAG 引擎通过结合文档分段、向量检索和生成模型,实现了高效可靠的知识问答能力。它支持本地和外部向量存储解决方案,并通过参数调优、缓存和压缩策略在性能和成本之间找到最佳平衡,使其适用于各种企业级场景。