RAG 落地三部曲:用 Milvus + Qwen3.6 打造企业知识库,我踩过的 5 个坑与解法

简介: 本文揭秘RAG落地常见误区:文档粗暴切片、纯向量检索、忽略重排序导致知识库“很蠢”。基于阿里云Milvus+百炼Qwen3.6,详解轻量部署、结构化分片、混合检索(向量+全文)、GTE-Rerank重排序及防幻觉Prompt工程,并给出Embedding成本优化策略。(239字)

一、RAG 不是银弹:为什么你的知识库"很蠢"?

我见过太多团队把一堆 PDF 直接扔给向量数据库,再套个 LLM 做问答,结果发现:模型要么在 hallucinate,要么在复读机式地念文档标题。

问题通常出在三个环节:

  1. 文档切片太粗暴:按固定字数切,把表格切烂、把代码切断。
  2. 只用向量检索:对专有名词、ID、日期的语义召回极差。
  3. 没有重排序:Top-K 向量召回的结果里,真正相关的段落可能排在第 8 位。

下面是我基于阿里云 Milvus + 百炼 Qwen3.6 落地后的完整调优记录。

二、环境准备:轻量起步,不要一上来就搞集群

向量数据库的选型上,我推荐从 Milvus 单机版 起步。阿里云 Milvus 单机版支持一键开通,4CU 起配就能支撑 900 万级向量,月付六百多,适合中小项目做 RAG 验证。等数据量破千万再平滑升级集群版,避免早期过度工程化。

# 连接阿里云 Milvus 单机版
from pymilvus import connections, FieldSchema, CollectionSchema, DataType, Collection
connections.connect(alias="default", uri="http://your-milvus-endpoint:19530")
fields = [
    FieldSchema(name="id", dtype=DataType.INT64, is_primary=True, auto_id=True),
    FieldSchema(name="chunk_text", dtype=DataType.VARCHAR, max_length=2048),
    FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=1024)
]
schema = CollectionSchema(fields, "enterprise_kb")
collection = Collection("docs", schema)

三、数据处理:好的 RAG 是"切"出来的

坑 1:无脑按 500 字切片

表格、代码块、FAQ 需要不同的切片策略。我的做法是用 langchain 的结构化分片器:

from langchain.text_splitter import RecursiveCharacterTextSplitter
# 对Markdown文档,按标题层级切
splitter = RecursiveCharacterTextSplitter(
    chunk_size=512,
    chunk_overlap=64,
    separators=["\n## ", "\n### ", "\n\n", "\n", "。", " "]
)
chunks = splitter.split_documents(docs)

坑 2:把元数据当空气

切片时务必保留文档标题、章节路径、文档类型等元数据。在 Milvus 里用标量字段存储,后续做过滤检索能大幅提升准确率。

四、检索策略:向量 + 全文 + 重排序

纯向量检索在企业场景下往往不够用。我的最终方案是 "混合检索 + 重排序"

# Step 1: 向量检索(语义匹配)
vector_results = collection.search(
    data=[query_embedding], 
    anns_field="embedding",
    param={"metric_type": "COSINE", "params": {"nprobe": 128}},
    limit=20,
    output_fields=["chunk_text", "doc_title"]
)
# Step 2: 全文检索(关键词匹配,用Milvus的Sparse Vector)
from pymilvus import AnnSearchRequest
sparse_req = AnnSearchRequest(...)
# Step 3: 重排序(Rerank)
from dashscope import TextReRank
rerank = TextReRank.call(
    model="gte-rerank",
    query=query,
    documents=[r.entity.get('chunk_text') for r in vector_results[0]]
)

坑 3:忽略重排序

向量检索召回 20 条后,一定要上 Rerank 模型。GTE-Rerank 在中文场景下效果显著,能把真正相关的片段排到 Top 3。

五、大模型生成:控制幻觉的 Prompt 工程

即使检索对了,模型也可能"脑补"。我的 Prompt 模板强制要求模型只基于提供的上下文回答,并输出引用标记:

你是一个企业知识库助手。请严格根据以下参考资料回答用户问题。
如果资料中不包含答案,请明确回答"根据现有资料无法确认"。
参考资料:
{retrieved_chunks}
用户问题:{query}
要求:
1. 回答需简洁,不超过200字。
2. 在答案末尾标注引用来源,格式如 [来源: 《XXX》第3节]。
3. 禁止编造资料中未提及的信息。

六、成本控制:别在 Embedding 上浪费预算

很多人只关注 LLM 的 Token 消耗,其实 Embedding 的调用量往往是 LLM 的 10 倍以上(每次入库、更新都要重新编码)。建议:

  • Embedding 模型选轻量级的(如 GTE-Large),不要无脑上 SOTA。
  • 百炼平台支持多模型灵活切换,可以用小模型做 Embedding + 大模型做生成,成本最优。

对于需要长期运行知识库的团队,建议关注阿里云百炼的 Token Plan 订阅方案。相比纯按量付费,包月模式在多模型切换和高频调用场景下更可控,且目前针对新用户有先用后返的权益,满额最高可返 200 元,个人和企业都能参与。

参考链接: 阿里云权益中心 - AI 产品权益与 Token Plan

七、总结

RAG 的落地是个系统工程。向量数据库负责"找得到",数据工程负责"切得好",重排序负责"排得对",Prompt 负责"不乱说"。 缺一不可。如果你正在从零搭建企业知识库,建议先用 Milvus 单机版跑通 MVP,再逐步叠加混合检索和重排序,千万别一上来就追求"大而全"。


相关文章
|
13天前
|
人工智能 JSON 供应链
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
LucianaiB分享零成本畅用JVS Claw教程(学生认证享7个月使用权),并开源GeoMind项目——将JVS改造为科研与产业地理情报可视化AI助手,支持飞书文档解析、地理编码与腾讯地图可视化,助力产业关系图谱构建。
23495 11
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
|
17天前
|
人工智能 缓存 BI
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro,跑完 Skills —— OA 审批、大屏、报表、部署 5 大实战场景后的真实体验 ![](https://oscimg.oschina.net/oscnet/up608d34aeb6bafc47f
5475 20
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
|
18天前
|
人工智能 JSON BI
DeepSeek V4 来了!超越 Claude Sonnet 4.5,赶紧对接 Claude Code 体验一把
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro 的真实体验与避坑记录 本文记录我将 Claude Code 对接 DeepSeek 最新模型(V4Pro)后的真实体验,测试了 Skills 自动化查询和积木报表 AI 建表两个场景——有惊喜,也踩
6539 16
|
7天前
|
人工智能 缓存 Shell
Claude Code 全攻略:命令大全 + 实战工作流(完整版)
Claude Code 是一款运行在终端环境下的 AI 编码助手,能够直接在项目目录中理解代码结构、编辑文件、执行命令、执行开发计划,并支持持久化记忆、上下文压缩、后台任务、多模型切换等专业能力。对于日常开发、项目维护、快速重构、代码审查等场景,它可以大幅减少手动操作、提升编码效率。本文从常用命令、界面模式、核心指令、记忆机制、图片处理、进阶工作流等维度完整说明,帮助开发者快速上手并稳定使用。
1664 3
|
6天前
|
前端开发 API 内存技术
对比claude code等编程cli工具与deepseek v4的适配情况
DeepSeek V4发布后,多家编程工具因未适配其强制要求的`reasoning_content`字段而报错。本文对比Claude Code、GitHub Copilot、Langcli、OpenCode及DeepSeek-TUI等主流工具的兼容性:Claude Code需按官方方式配置;Langcli表现最佳,开箱即用且无报错;Copilot与OpenCode暂未修复问题;DeepSeek-TUI尚处早期阶段。
1130 3
对比claude code等编程cli工具与deepseek v4的适配情况
|
2天前
|
人工智能 BI 持续交付
Claude Code 深度适配 DeepSeek V4-Pro 实测:全场景通关与真实体验报告
在 AI 编程工具日趋主流的今天,Claude Code 凭借强大的任务执行、工具调用与工程化能力,成为开发者与自动化运维的核心效率工具。但随着原生模型账号稳定性问题频发,寻找一套兼容、稳定、能力在线的替代方案变得尤为重要。DeepSeek V4-Pro 作为新一代高性能大模型,提供了完整兼容 Claude 协议的 API 接口,只需简单配置即可无缝驱动 Claude Code,且在任务执行、工具调用、复杂流程处理上表现极为稳定。
838 0
|
1月前
|
人工智能 自然语言处理 安全
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
本文介绍了Claude Code终端AI助手的使用指南,主要内容包括:1)常用命令如版本查看、项目启动和更新;2)三种工作模式切换及界面说明;3)核心功能指令速查表,包含初始化、压缩对话、清除历史等操作;4)详细解析了/init、/help、/clear、/compact、/memory等关键命令的使用场景和语法。文章通过丰富的界面截图和场景示例,帮助开发者快速掌握如何通过命令行和交互界面高效使用Claude Code进行项目开发,特别强调了CLAUDE.md文件作为项目知识库的核心作用。
27256 65
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)