当前位置:   article > 正文

RAG应用实践-基于大模型构建知识库(Java版本)_如何将rag模型应用到java项目中

如何将rag模型应用到java项目中

目前大部分基于大模型的应用都是用python写的,本文使用java实现一个基于大模型的知识库(RAG系统)。

一、技术栈

1.1 开发框架:SpringBoot、langchain4j

1.2 数据库: Postgresql(需要安装pgvector插件以支持向量数据)

1.3 嵌入模型(embedding model):all-minilm-l6-v2、e5-small-v2、bge-small-en、bge-small-zh

1.4 大语言模型(LLM):GPT

二、RAG基本流程

主要分为两步:

步骤一:知识库数据预处理(向量化)

由分词器将知识切块,再交由embeding model向量化,接着将向量数据存储向量数据库中(此时我们将这些数据存储到postgres中)

Ingestion

步骤二:用户提问

用户提问(搜索)这一流程也可以分为两步:

  • 文档召回:用户的问题交由embedding model向量化,并从向量数据库中进行近似搜索,返回匹配的top k个向量数据(此时通常将对应的文本块也一并返回)

  • 向LLM提问:程序自动将匹配的内容与用户问题组装成一个Prompt,向大语言模型提问,大语言模型返回答案

Retrieval

三、代码

知识库预处理核心代码:

  1. EmbeddingStoreIngestor.builder()
  2. .documentSplitter(documentSplitter)
  3. .embeddingModel(embeddingModel)
  4. .embeddingStore(embeddingStore)
  5. .build()
  6. .ingest(document);

用户提问逻辑核心代码:

  1. ContentRetriever contentRetriever = EmbeddingStoreContentRetriever.builder()
  2. .embeddingStore(embeddingStore)
  3. .embeddingModel(embeddingModel)
  4. .maxResults(2) // on each interaction we will retrieve the 2 most relevant segments
  5. .minScore(0.5) // we want to retrieve segments at least somewhat similar to user query
  6. .build();
  7. CustomerSupportAgent agent = AiServices.builder(CustomerSupportAgent.class)
  8. .chatLanguageModel(chatModel)
  9. .contentRetriever(contentRetriever)
  10. .chatMemory(chatMemory)
  11. .build();
  12. agent.answer("用户的问题");

四、最终效果

4.1 上传知识库文件

4.2 文本分块并向量化

向量数据

4.3 搜索效果

完整代码见:GitHub - moyangzhan/langchain4j-aideepin: JAVA版本的检索增强(RAG)大模型知识库项目

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/867477
推荐阅读
相关标签
  

闽ICP备14008679号