一行文字介绍工作流程
用户输入问题 → 后端将问题向量化 → 向量索引检索相关内容 → 将检索内容与原问题组合并调用LLM生成回答 → 返回前端
全部流程介绍说明
- 用户输入问题:在产品的前端界面,就像使用Chatgpt一样,网页端即为前端页面。
- 前端请求后端:将用户问题发给后端服务。
- 问题文本向量化(Embedding):
- 后端使用文本向量模型(Embedding Model),把用户问题转换为向量。
4. 向量索引检索:
- 后端将问题向量与向量数据库 / 向量索引进行相似度匹配,检索出若干条最相关的文档片段。
5.RAG(Retrieval-Augmented Generation) 组合上下文:
- 取出检索到的文档片段(即“相关内容”);
- 将问题及相关片段拼接或整合成一个“上下文提示”(Context Prompt)。
6. 大语言模型生成:
- 将上述上下文提示(Context Prompt)输入到大语言模型(LLM)中,让模型基于“检索到的外部知识+用户问题”进行内容生成。
7. 返回结果给前端:
- 后端将模型生成的回答结果返回给前端展示给用户。
关键概念介绍
1.知识库(Knowledge Base)
- 知识库的作用是什么?
- 知识库用来存储我们要检索的资料或者文档,一般是个性化的知识与内容。
- 知识库通常包含:原始文档(PDF、Markdown、网页内容、数据库内容等)。
- 知识库使用的注意事项?
- 这些文档需要进行切分和清洗整理,并保存到向量数据库或者文档库中。
2.向量索引(Vector Index)
- 如何得到向量?
- 需要使用Embedding模型对文本进行向量化,即将文本转化为向量。
- 如何存储向量?
- 通常的做法是使用向量数据库,通常包括Faiss,Milvus,Chroma,PGVector等。
- 如何检索向量?
- 利用问题向量与数据库已有向量的相似度进行挑选,挑选出距离近的文本。
- 为什么使用向量检索?
- 相比关键字检索,向量检索从语义相似度的角度出发,能更好地理解问题。
3.RAG(Retrieval-Augmented Generation)
- RAG有两个关键点:检索(Retrieval)和生成(Generation)。
- 在使用向量化方法挑选出最相关文本后,会将其与用户的问题合并,输入到大语言模型中,让LLM基于外部的知识来生成回答。
- 这样做有什么好处?
- 这样可以显著降低LLM一本正经地胡说八道,同时可以更准确地回答相关问题。
判断低价中转API是否合理?
有人看到一些中转的API价格十分低,还有1RMB抵用1USD的情况,利用上文我们了解到的知识,可以进行以下判断:
- 黑卡,这种一般就是黑卡付钱或者用完就弃账号
- 降智或者换低价模型:比如你购买的gpt4,给你gpt4o的API用,在后面偷换模型
- 使用缓存:大部分平台都做了缓存,即将用户的问答存储作为知识库,如果内容完备,可以直接返回结果给用户,这种情况其实并没有真的去调用API。这个过程其实主要利用向量检索匹配相似度,因为相似的问题已经有了答案,会直接给你回复。
- RAG修饰:在上一步使用缓存后,可能给你调用一个本地部署的开源模型组织答案进行生成,因为前面有了更好模型生成的答案,再放到一个普通的开源模型中,表现也不会差到哪里去。
总结
上文介绍了RAG大语言模型产品的工作流程,为什么介绍RAG,因为这个目前是最经典的用法,当然还有其他的大语言模型产品,如果不加RAG,就是原生的prompt产品,使用的就是模型知识,会有幻觉,具体这些会在后面的文章中介绍。
本文的主要目的是科普一下大语言模型产品的工作流程,使读者有一个基础概念及流程,同时能分辨各种乱象的产品,判断产品是否靠谱。