雌鲳签 发表于 2025-6-2 23:13:17

解密AI知识库

https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250409031437583-239351076.gif
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250430113321453-1592823229.png
许多人对AI知识库的理解是:只需将所有资料拖入AI客户端(如Cherry Studio),AI便会自动阅读并生成完美结论。
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250429192420383-911411938.png
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250429192512813-2036163260.png
但实际体验后,大家发现AI知识库效果远不如预期,经常出现各种问题。
技术原理与局限

本文将从原理出发,分析AI知识库的技术局限,并介绍进阶方案,如重排序模型、数据库(MCP server)和超长上下文模型等。
目前主流的大模型知识库采用RAG(检索增强生成)技术。
用户添加资料时,系统会先将其拆分为多个文本块。
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250429194955186-1501552785.png
随后,嵌入模型将这些文本块向量化,即将文本转为一组超长数字序列。
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250429195530514-1219364926.png
以我的知识库为例,嵌入模型输出1024维向量:
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250429195705226-1253694474.png
每个文本块都被转为1024个数值组成的向量:
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250429195950623-1194851168.png
系统将向量及对应文本存入向量数据库。
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250429200209340-662975629.png
用户提问时,问题同样被向量化为1024维向量。
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250429213421777-1817265815.png
系统将问题向量与数据库中所有向量进行相似度计算,完全基于数学运算。
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250429213645583-1799810804.png
最终,知识库选出最相似的原文片段,与用户问题一同发送给大模型,由其归纳总结。
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250429214138843-1264554988.png
可见,在RAG架构中,大模型主要负责归纳总结,答复质量很大程度取决于检索精度。RAG系统普遍存在分块粗糙、检索不准、缺乏全局视角等问题。
Cherry Studio安装与配置

前往Cherry Studio官网下载并安装软件:Cherry Studio
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250430094133361-1209502205.png
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250430094223544-208055413.png
安装过程简单,按提示操作即可。
安装后,打开软件,点击左下角“设置”-“模型服务”。
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250430094517278-565127438.png
本文以硅基流动提供的免费嵌入模型为例。找到“硅基流动”,点击获取密钥。若无账号可先注册。
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250430094616089-119516354.png
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250430094655504-34754920.png
欢迎在评论区互助分享邀请码。
点击左侧“API密钥”,新建密钥(如“程序员NEO”),复制生成的密钥。
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250430094939985-1452220004.png
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250430095115995-267380053.png
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250430095401869-369253464.png
将密钥填入Cherry Studio。
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250430095505856-1579445072.png
添加嵌入模型:点击“模型”右侧添加按钮。
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250430095551854-1604805304.png
回到硅基流动“模型广场”,筛选“类型”为“嵌入”,选择“bge-m3(免费)”,复制模型名称。
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250430095640106-496306173.png
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250430095742449-220692454.png
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250430095920841-2041749381.png
回到Cherry Studio,填入模型名,点击“添加嵌入模型”完成配置。
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250430100223923-1726871829.png
知识库配置与文件添加

配置知识库:点击左侧“知识库”-“添加”,填写名称,选择刚添加的嵌入模型,点击确定。
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250430101827590-705819126.png
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250430101920369-1923089673.png
添加文件:点击“添加文件”,选择文档(如《三国演义》),打开后自动处理。
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250430102102014-855010491.png
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250430102150288-1394588170.png
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250430102215927-552551367.png
分片已存入向量数据库。
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250430102701483-978783743.png
根据官方文档,目前使用turso的libSQL数据库。
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250430102905825-997138006.png
在知识库页面右上角点击“搜索知识库”可检索分片内容。
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250430103126221-1412521817.png
如搜索“刘备”,系统会基于向量匹配查找相关段落,每段约300字。
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250430103305273-790746818.png
Cherry Studio采用long chain递归文本分割器。
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250430133803237-803574025.png
RAG知识库的缺陷与改进

分块方式简单

这种分块方式基本按段落分块,段落过长则按固定字数切分,常导致句子被截断。
以刚检索到的“刘备”为例:
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250430151459639-1035054721.png
可见“:”前内容被截断,结尾“虽是”也未说完。由于分块上限为300字,前后句被强行截断。
这暴露了RAG知识库的缺陷:分块粗糙,AI难以理解上下文,导致回答不精准。
虽然也有基于语义分析的分块方法,但目前大多不成熟,效果甚至不如简单分割。
检索不精准

RAG的另一个问题是检索不准。例如搜索“曹操兵器”,想找倚天剑的信息。
系统仅基于数字相似度匹配,无法真正理解文本含义,筛选片段可能相关也可能无关,难以精准匹配。
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250430152557929-1052262168.png
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250430152730896-198232544.png
匹配结果往往不是所需信息,这是RAG系统的痛点之一。
较好的改进方案是引入重排序模型。先用向量数据库初步检索,再用重排序模型做语义分析,根据相关性重新排序。
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250430153737727-858297771.png
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250430154018440-1845891536.png
以“曹操兵器”为例,添加重排序模型后,效果明显提升。进入模型服务,找到硅基流动,添加重排序模型。
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250430154858029-929491136.png
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250430154928837-1370988293.png
https://img2023.cnblogs.com/blog/2105804/202504/2105804-20250430155031613-1276303404.png
复制免费重排序模型名称,回到Cherry Studio添加。
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250501145359993-870582237.png
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250501145457218-2135493368.png
在知识库设置中添加重排序模型,点击确定。
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250501145526642-1937286570.png
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250501145604456-1366573556.png
再次搜索“曹操兵器”,倚天剑信息排到第二位,分数78%。重排序模型显著提升了检索精度。
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250501153705815-393627425.png
缺乏全局视角

第三个痛点是缺乏全局视角。以AI生成的300条学生统计数据为例:
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250501154037993-1973827405.png
如需统计分析(如最大最小值),RAG难以胜任。向量数据库只能匹配文本块,无法整体分析。
将Excel文件添加到知识库:
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250501154256715-1816798010.png
在聊天界面(使用DeepSeek,硅基流动提供),开启知识库。
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250501154533406-2010864680.png
提问“共有多少学生”,AI仅获取六个片段。
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250501155453606-183186230.png
实际有300个学生。
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250501155553021-664871262.png
AI却答120个。
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250501155604602-543502869.png
因此,结构化或统计性问题建议用关系型数据库。现在可通过MCP让AI操作数据库,效果更佳。
数据库接入与配置

已将学生数据导入PostgreSQL数据库。
数据准备与导入

借助ChatGPT将Excel数据转为SQL语句,高效导入数据库。以下为效果截图,敏感信息已脱敏。
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250502113327054-8632948.png
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250502113442309-1105496344.png
Cherry Studio环境配置

在Cherry Studio配置MCP server,使AI可访问数据库。进入设置,添加MCP服务器。
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250502113650952-1995125431.png
如出现红色感叹号,点击查看详情,按提示安装UV和Bun依赖。
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250502113745936-1000638889.png
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250502113827556-226378568.png
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250502113927253-1247964436.png
安装完成后,编辑MCP配置。
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250502114105173-1720574911.png
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250502114119082-498211215.png
数据库接入MCP Server

在MCP配置页面查找PostgreSQL MCP。可参考官方GitHub:PostgreSQL MCP
复制官方配置内容,粘贴到Cherry Studio。
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250502114425443-228223137.png
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250502114510383-1971372070.png
将 postgresql://localhost/mydb 替换为自己的数据库地址,格式如下:
"postgresql://:@:/"示例(已脱敏):
postgresql://db_user:db_password@db-host.example.com:5432/dbname?sslmode=require

[*]db_user:数据库用户名
[*]db_password:密码
[*]db-host.example.com:主机地址
[*]5432:端口(默认5432)
[*]dbname:数据库名
[*]sslmode=require:强制SSL加密
点击确定,启动服务。
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250502170749187-1127196873.png
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250502125317059-1895634060.png
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250502125331488-1880053985.png
系统提示词配置

回到聊天界面(需选择支持函数调用的模型,模型名后有扳手图标),选择刚配置的Postgres MCP服务器。
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250502125444020-843288425.png
编辑系统提示词,先提供数据库表结构信息。
扩展两张表:课程表和选课成绩表。
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250502130956346-1352334141.png
你是数据库助手,以下是PostgreSQL表结构,请结合表结构和查询结果回答用户问题。CREATE TABLE students (    id SERIAL PRIMARY KEY,    name VARCHAR(100),    age INTEGER,    phone VARCHAR(20),    gender VARCHAR(10));CREATE TABLE courses (    course_id INTEGER PRIMARY KEY,    course_name VARCHAR(100));CREATE TABLE enrollments (    id SERIAL PRIMARY KEY,    student_id INTEGER REFERENCES students(id),    course_id INTEGER REFERENCES courses(course_id),    score INTEGER);https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250502171116221-1469994315.png
效果验证

保存后测试,如“学生总数是多少”。
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250502171150567-793257040.png
AI可成功调用MCP server,通过SQL查询返回结果。需选择支持工具调用的模型。
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250502171235838-1129856719.png
再问“年龄最大的学生是谁”,同样查询成功。
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250502171726621-2062214468.png
测试复杂问题,如“哪些学生选修了数学课,分数最高前三名”。
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250502171955308-42647684.png
AI可联合三表查询,准确返回结果。通过MCP server对接数据库,结构化数据检索效果远超普通知识库。
超长上下文模型的应用

此外,还可利用支持超长上下文的模型,将资料直接拖入对话框。
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250503183743273-919876114.png
模型窗口进化与测试

如上图,近两年模型上下文窗口大幅提升。例如Gemini 2.0 Pro已支持2000万token,可容纳四大名著。以下以Gemini为例测试。
API密钥获取与模型配置

访问谷歌AI Studio(需魔法上网)。
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250503212258737-725837697.png
右上角“Get API Key”,点击创建API密钥。
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250503212344877-1566637495.png
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250503212431490-329696442.png
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250503212516239-1127279215.png
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250503212535839-1744739002.png
复制API密钥。
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250503212629658-840250911.png
回到Cherry Studio,设置模型服务商为Gemini,填写API密钥。
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250503212804792-538338252.png
添加模型,点击“添加”,模型ID可在AI Studio选择。以Gemini 2.0 Flash为例,支持100万token上下文,且有免费额度。
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250503213056459-1247386115.png
复制Gemini 2.0 Flash模型ID。
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250503213130872-306646372.png
回到Cherry Studio,填写模型ID并添加。
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250503213157595-720218844.png
切换聊天模型为Gemini 2.0 Flash。
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250503213328438-207026357.png
清空助手默认Prompt。
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250503213628986-541298973.png
知识库检索实战

测试知识库能力。以全本《三国演义》为例,用VSCode将张飞武器改为“丈九棒棒糖”,保存。
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250503221123661-992705853.png
将全本《三国演义》拖入对话框,提问:“张飞造了什么兵器,请找到原文位置并据此回答。”
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250503221214431-1988960764.png
AI成功检索到答案,第一回中张飞造“丈九棒棒糖”。本次任务消耗551266 token。
https://img2023.cnblogs.com/blog/2105804/202505/2105804-20250503221403369-876391247.png
整个《三国演义》仅用了一半上下文窗口。利用Gemini超长上下文进行知识库检索,效率极高。
总结与展望

AI知识库常被称为“demo五分钟,上线一年”。目前AI知识库仍是复杂系统工程,无通用银弹,项目落地需多工具协作。当前效果较好的方案是自适应RAG,根据查询类型自动选择检索策略,结合多种方式提升精度。本文到此结束.
https://img2020.cnblogs.com/blog/2105804/202110/2105804-20211018193036249-609404174.gif
推荐阅读:
主题链接
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 解密AI知识库