求大佬指点, ai 加知识库的内部原理

33 天前
oldManNewThought  oldManNewThought

类似 cherry studio, dify 等软件可以使用第三方 ai 的 api 接口,然后在提供上传文档变成知识库,内部的实现原理是什么?求大佬指点

4605 次点击
所在节点   程序员  程序员
34 条回复
xiadengmaX1
xiadengmaX1
33 天前
superBIUBIU
superBIUBIU
33 天前
原理就是解析文件形成上下文记忆啊
visper
visper
33 天前
首先,我们知道,和大模型聊天的时候,我们可以设计 prompt,例如:
请结合以下上下文内容,回答用户问题:
```
context
```
用户问题如下:
query

-----
那么,上传文档变成知识库,就是把文档分段,使用向量数据库存起来。当用户提问的时候(假设内容叫 query),拿 query 内容通过向量搜索找到相关的知识片段,组合成 context,拼到上面类似的 prompt 里面一起给大模型回答。
另外,向量数据库搜索只是比较通用的一种方式。知识怎么分段怎么存,你可以自己设计比如存关系数据库都没问题。
ihainan
ihainan
33 天前
最简单来说,就是文档切片转为向量存入向量数据库,Query 也转为向量,从向量库找出最相似的切分,文本拼接起来给 LLM 模型回答问题。

当然实际肯定比这个要复杂。
gavin6liu
gavin6liu
33 天前
把你提供的文档 根据一定的规则拆成片段,通过一个模型( embedding 模型)转成向量,存起来就变成了知识库。这个过程类比 es 一类的搜索引擎,只不过常规搜索引擎是分词,他这个是向量。

当你问了一个问题,把你的问题也转成向量,和知识库里面的数据做向量计算,拿到最相似的,拼到上下文中,发给大模型,让大模型回答给你。
cheng6563
cheng6563
33 天前
和搜索引擎差不多
cheng6563
cheng6563
33 天前
尤你的 AI 前端程序(不是模型)在知识库搜索内容,然后插到聊天记录里面
gaobh
gaobh
33 天前
矢量数据库,调好参数把数据扔进去解析,聊天的时候触发关键字去矢量数据库拿命中数据添加到上下文再聊天,好不好用全靠参数调的好不好
musi
musi
33 天前
就是一个搜索引擎,从你的文档中选取和你问题最相关的段落连带着你的问题发给 LLM ,让 LLM 基于文档去回答你的问题。
可以说搜索这部分和 AI 一点关系都没有
liuchengfeng1
liuchengfeng1
33 天前
我也想知道;例如我把我博客文章全部给 ai ,让 ai 根据我给它的数据,每次问它能找到对应的文章。该如何实现?最好能封装一个 api
joyhub2140
joyhub2140
33 天前
模型貌似是无状态的,可以理解外靠外挂向量数据库来构建每一次的提问。

你每次问之前,外部程序都会先从自己的提问历史结合向量数据库构造出完整的上下文,再打包发给模型。

我之前还想调用 ollama 的 api ,想着应该会有个 token id 之类的,后面发现没有,想维持上下文,得把之前得提问历史也需要一并发过去给模型,相当于模型只是纯思考的机器,上下文还是得靠外部程序来构建。
moyufjm123
moyufjm123
33 天前
小白问一下,那要是知识库很大,上下文很多,token 岂不是消耗很快?应该涉及多次问答会不会重复发送上下文?
onevcat
onevcat
33 天前
RAG
aloxaf
aloxaf
33 天前
嵌入模型是用来把文字转成向量的,这样就可以把文字的相似度匹配转成向量的相似度匹配,这样一来更快,二来还能匹配语义上相似但实际不同的句子。
xwayway
xwayway
33 天前
@moyufjm123 #12 会返回知识库的 top k ,不会整个知识库一起给到大模型
chairuosen
chairuosen
33 天前
小白再问一下,大语言模型是基于概率预测的,那即使有知识库,它一定能返回和知识库内容完全一样的结果么?比如让它基于条件选择合适的 row 并把知识库这一行完整返回来
tool2dx
tool2dx
33 天前
@chairuosen 我用 deepseek 试过,可以把知识库作为提示词一部分喂给他,基本上回答没啥问题,比别的 AI 模型要聪明。就是比较费 token 。
aloxaf
aloxaf
33 天前
@moyufjm123

> 那要是知识库很大,上下文很多,token 岂不是消耗很快?

理论上是的,但是一般来讲,只有被匹配到的一段文本(和它们的上下文)会被发送给 LLM ,而且很多工具只会发送匹配度最高的 N 段文本,当然代价就是准确性降低。

> 涉及多次问答会不会重复发送上下文?

会,但有的模型是支持缓存的,比如 OpenAI 和 DeepSeek 连续对话时会自动缓存上下文,命中缓存就有折扣。不过也有模型比如 Claude 和 Gemini 得手动触发缓存,很多工具压根就没有适配……
tool2dx
33 天前
@moyufjm123 如果知识库很大,会改用微调大模型,这方法不合适。这方法就是很消耗 token ,没办法。
crackidz
33 天前
这种基础的问题,你询问 AI 会更快一些...

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1112813

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX