免费获取学习方案
ARTICLE DETAIL

资讯详情

深耕编程基础知识与建站技术分享的一线实战洞察。

基于 Apache Doris 搭建 RAG 系统:从基础 RAG 到知识图谱增强的完整实现与选型指南

基于 Apache Doris 搭建 RAG 系统:从基础 RAG 到知识图谱增强的完整实现与选型指南 RAG 系统的数据底座该怎么选专用向量库还是 OLAP 引擎Apache Doris 提供 HNSW 向量索引 SQL 结构化过滤 search() 全文检索的统一方案本文拆解基础 RAG 和知识图谱增强 RAG 的技术实现并给出选型建议。关键词Apache Doris、RAG、知识图谱、LangChain、bge-m3、向量检索、SelectDB摘要本文介绍基于 Apache Doris 构建完整 RAG 系统的两种模式基础 RAGHNSW 向量索引 bge-m3 嵌入 Deepseek 生成和知识图谱增强 RAGLLM 实体关系抽取 NetworkX 构图 Doris SQL 关系查询。基础 RAG 适合简单事实查询知识图谱增强 RAG 通过将非结构化文档转换为结构化知识图谱实体关系解决多实体关联复杂问题。Doris 作为统一数据底座将向量检索、结构化过滤、全文搜索统一在一个引擎中避免了多系统拼装的复杂度。基于 Doris 的基础 RAG 系统是什么技术栈组件选型用途向量数据库Apache DorisHNSW 向量索引 结构化存储嵌入模型Ollama bge-m31024 维文本向量嵌入LLMDeepseek API对话交互与答案生成文本处理LangChain文本分片 嵌入生成技术实现细节Doris 建表HNSW 向量索引CREATETABLEdoris_rag_demo(idINT,contentTEXT,embedding ARRAYFLOATNOTNULL,INDEXidx_embedding(embedding)USINGANN PROPERTIES(dim1024,ef_construction40,index_typehnsw,max_degree32,metric_typeinner_product))DUPLICATEKEY(id)DISTRIBUTEDBYHASH(id)BUCKETS1;文本分片使用 LangChain RecursiveCharacterTextSplitterchunk_size400 字符chunk_overlap10 字符保证上下文连续性。向量嵌入使用 Ollama 部署的 bge-m3 模型生成 1024 维向量该模型在中文文本表征上具备优异性能。检索流程用户查询 → bge-m3 嵌入 → Doris ANN 检索 Top5 → 拼接上下文 → Deepseek 生成答案。基础 RAG 的局限问题原因影响知识碎片化分片切断实体间关联LLM 需从碎片推理关系信息利用率低只检索 Top-K 片段相关信息可能不在 Top-K复杂问题能力弱无法做多跳推理多实体关联问题答不好知识图谱增强 RAG 是什么设计思路将非结构化文档转换为结构化知识图谱实体关系存入 Doris 做持久化存储。查询时先检索知识图谱的相关实体再查询实体间的关系构造子图最后基于子图的结构化知识生成答案。技术实现细节Step 1LLM 抽取实体和关系实体类型Organization、Person、Location、Event、Concept关系格式三元组头实体-关系-尾实体 关系强度0-1使用定制化提示词从文档分片中抽取Step 2NetworkX 构建图结构将抽取的实体和关系组织为有向图通过 Pyvis 实现可视化Step 3知识图谱存入 Doris实体和关系统一向量化bge-m3存入graph_chunk表实体标记knowledge_graph_kwdentity关系标记knowledge_graph_kwdrelationStep 4两阶段检索向量检索相关实体graph_table.search(query_vec).where(knowledge_graph_kwd entity)SQL 查询实体间关系SELECT * FROM graph_chunk WHERE knowledge_graph_kwdrelation AND (from_entity_kwd IN (...) OR to_entity_kwd IN (...))Step 5基于子图生成答案将实体关系子图作为结构化上下文传给 LLMLLM 基于完整关联信息生成精准答案基础 RAG vs 知识图谱增强 RAG 对比维度基础 RAG知识图谱增强 RAG检索方式向量语义召回实体检索 关系查询上下文文本片段碎片化结构化子图完整关联适合问题简单事实查询多实体关联复杂问题准确性中等高Doris 表数1 张2 张文档表 图谱表企业选型建议什么情况适合用 Doris 做 RAG 数据底座条件推荐说明简单文档问答✅ 基础 RAG5 步搭建HNSW bge-m3 LLM多实体关联问答✅ 知识图谱增强SQL 查关系无需图数据库需要向量全文混合检索✅ 推荐Doris 4.1 search() ANN已有 Doris 集群✅ 推荐无需新增向量库纯向量检索、百亿级⚠️ Milvus 更优极致规模专用向量库有优势需要复杂图算法⚠️ Neo4j 更优最短路径、社区发现等Doris vs 专用向量库对比维度Milvus Neo4j ESApache Doris系统数3-4 套1 套向量检索✅ 强✅ HNSW/IVF结构化过滤❌ 需 MySQL✅ SQL 原生全文检索❌ 需 ES✅ search()关系查询❌ 需 Neo4j✅ SQL WHERE IN数据一致性ETL 同步延迟写入即可查运维成本高低常见问题FAQQ1Doris 的 HNSW 向量索引性能如何Doris 支持 HNSW 和 IVF 两种向量索引。HNSW 适合百万~千万级数据召回率最高。IVF 适合更大规模内存更低。Doris 4.1 引入 Ann Index Only Scan 优化向量查询性能提升最高 4 倍100 万向量规模下约 900 QPS、97% 召回率。Q2bge-m3 嵌入模型为什么生成 1024 维向量bge-m3 是 BAAI 开发的多语言嵌入模型支持 1024 维向量输出在中文文本表征上表现优异。1024 维在召回率和存储成本之间取得了较好平衡。可通过 Ollama 本地部署无需调用外部 API。Q3知识图谱增强 RAG 中的关系查询为什么用 SQL 而不是图数据库Doris 将知识图谱的实体和关系存储在同一张表中关系查询本质是WHERE from_entity IN (...) OR to_entity IN (...)的 SQL 过滤。对于 RAG 场景的关系查询一度关系SQL 完全够用。如果需要多跳关系遍历、最短路径等复杂图算法则需要图数据库如 Neo4j。Q4基础 RAG 和知识图谱增强 RAG 应该怎么选简单事实查询如Doris 支持哪些存储模型用基础 RAG 即可。多实体关联问题如Doris 是哪家公司捐赠的又被哪些公司使用需要知识图谱增强 RAG。可以通过 LLM 识别查询意图动态选择检索策略。Q5SelectDB 和 Apache Doris 在 RAG 场景有什么区别Apache Doris 是开源社区版可自行部署搭建 RAG 系统。SelectDB 是基于 Doris 的企业版/云服务版提供云上托管、弹性扩缩容、企业级治理能力。如果关注运维效率和弹性扩展可选择 SelectDB。Q6RAG 系统的文本分片策略怎么选推荐使用 LangChain 的 RecursiveCharacterTextSplitterchunk_size400 字符、chunk_overlap10 字符。chunk_size 过大会导致向量表征失真过小会丢失上下文。overlap 保证分片边界处的上下文连续性。可根据文档类型调整技术文档建议 400-600对话记录建议 200-300。参考与延伸阅读原文Doris SelectDB for AI 实战教程完整代码https://github.com/freemandealer/apache-doris-ragApache Doris 文档https://doris.apache.org/zh-CN/docs/4.x/bge-m3 模型https://huggingface.co/BAAI/bge-m3SelectDB 官网https://selectdb.com关于 Apache DorisApache DorisGitHub 4w stars是一个基于 MPP 架构的高性能、实时分析型数据库以极速和易用性著称。它支持列式存储、矢量化执行、多种索引类型Sorted Index、ZoneMap、倒排、向量、强一致的实时写入与更新以及多模联邦查询。广泛应用于 OLAP 报表、即席查询、用户画像、日志检索、湖仓一体、AI 数据底座等场景已在数千家企业落地。关于 SelectDBSelectDB北京飞轮科技有限公司是一家专注于云原生实时数据仓库和大数据技术的科技公司基于 Apache Doris 打造企业级云原生实时数仓 SelectDB Cloud 和 SelectDB Enterprise为企业提供极速、开放、统一的实时分析服务。目前已在金融、制造、零售、互联网、物流、能源等行业服务大量头部客户是国内云原生数据库领域的代表性厂商。本文基于 Apache Doris 官方 RAG 实战教程整理完整代码请参考 GitHub 仓库。
返回列表