当前位置:首页 > 4. RAG(检索增强生成)知识库 >

4. RAG(检索增强生成)知识库

来源 德薄能鲜网
2025-06-24 12:24:24

RAG(检索增强生成)。

除了将文档嵌入到向量数据库中࿰之外,建立自己的知识库c;就是RAG。当用户提问时,首先从数据库中搜索相关信息,然后将相关信息拼接到用户的问题,然后让模型生成答案。

文档嵌入。

参考文件嵌入,将自己的文档插入数据库。

QuestionAnswerAdvisor。

QuestionAnswerAdvisor。当用户提出问题时,可以,先向数据库查询相关文件,然后将相关文档拼接到用户的问题,然后让模型生成答案。那就是。RAG。的实现了。

RAG。实现过程:

  1. query。= 用户提问;template。= 提示词模板。
  2. QuestionAnswerAdvisor。在运行过程中更换模板中的占位符。question_answer_context。,在向量数据库中替换文档,即。context=template.replace("question_answer_context",查询到的文档)。。此时的。contextQuery。=query。+context。;
  3. contextQuery。发送给大型模型以获得答案。

正常的提问过程是。query。=用户提问;query。发送给大型模型以获得答案。
对比。RAG。提问过程中可以发现提示词模板和向量数据库查询过程较多。

private。final。VectorStore。vectorStore。;/**     * 从向量数据库中找到文档,并将查询文档作为上下文的答案。     *     * @param prompt 用户的提问     * @return SSE流响应     */。@GetMapping。(。value。 ="chat/stream/database",produces。 =MediaType。.。TEXT_EVENT_STREAM_VALUE。)。public。Flux。<ServerSentEvent。<String。>>chatStreamWithDatabase。(。@RequestParam。String。prompt。)。{ 。// 1. 定义提示词模板󿀌question_answer_context将被在向量数据库中查询的文档取代。String。promptWithContext。 ="""                以下是上下文信息                ---------------------                { question_answer_context}                ---------------------                给定的上下文和提供的历史信息,而不是事先知识,回复用户的意见。如果答案不在上下文中,告诉用户你不能回答这个问题。如果答案不在上下文中,告诉用户你不能回答这个问题。                """;return。ChatClient。.。create。(。dashScopeAiChatModel。)。.。prompt。(。)。.。user。(。prompt。)。// 2. QuestionAnswerAdvisor将在运行过程中替换模板中的占位符`question_answer_context`,取而代之的是在向量数据库中找到的文档。此时的query=用户提问+替换提示词模板;.。advisors。(。new。QuestionAnswerAdvisor。(。vectorStore。,SearchRequest。.。defaults。(。)。,promptWithContext。)。)。.。stream。(。)。// 3. query发送给大模型以获得答案。.。content。(。)。.。map。(。chatResponse。 ->ServerSentEvent。.。builder。(。chatResponse。)。.。event。(。"message")。.。build。(。)。)。;}。