Skip to content

NingNing0111/know-hub-ai

Repository files navigation

说明

 使用SpringAI 1.x版本对项目进行重构,旧版本详见分支0.8-vue

  • 前端:React + Umi.js
  • 后端:SpringAI 1.x

功能集中实现:知识库分离,文档分离,支持指定某个知识库进行RAG对话、多模态对话。

项目介绍

know-hub-ai是一款采用RAG 技术实现的个人知识库 AI 问答系统,本项目适配 OpenAI 接口,因此可搭配One-API实现大语言模型的统一调用。

 🌟🌟请将本项目视为一个 Spring AI 和 RAG 技术的学习项目,本项目重在介绍 Spring AI 的使用以及结合向量数据库实现 RAG 技术的实现

特性

  • 使用最新的Spring AI 1.0版本实现;
  • 自定义ChatMessage用于存储到数据库,保留对话信息;
  • 基于自定义的ChatMessage实现DatabaseChatMemory将对话数据存储到数据库中;
  • 使用QuestionAnswerAdvisor+自定义提示词构建RAG对话上下文;
  • 通过自定义向量数据查询条件,实现知识库分离,支持RAG对话时指定某些知识库;
  • 多模态对话时,将附件存储到Minio;

TODO

后端工作

  • 对话附件上传接口:多模态需要。文档或图片上传时返回id,携带该id发起对话,Media 在后端根据id构建。
  • DatabaseChatMemory 实现:Message 存储到数据库中
  • 知识库增删改查接口:添加知识库、删除知识库、知识库列表
  • 知识库附件上传接口:指定知识库(携带id)上传,将文档存储到向量数据库(meta记录知识库id-baseId),同时生成附件文档对象。
  • 知识库下的附件文档删查接口:在指定知识库下,可以删除附件、查询附件。
  • 对话信息接口:创建对话、查询对话信息
  • 非多模态RAG对话: 指定多个知识库进行对话
  • 简单对话
  • 多模态简单对话
  • 多模态RAG对话
  • 文档上传时,提取文档内部图片,调用多模态模型对图片进行描述然后入库。后续对话时,将文档里的图片及描述作为上下文。

前端工作

  • 对话界面: 快速搭建
  • 知识库管理界面
  • 知识库下附件管理界面

演示

知识库管理

img.png

img.png

简单对话 + 简单RAG对话

img.png

img_1.png

多模态对话

img.png

开发

环境

启动前端

pnpm install
pnpm start

启动后端

  • 修改配置文件:application.ymlllm.yml

 注意:application.yml配置里的llm-dev.yml需要改为llm.yml,当然也可以新建llm-dev.yml,在代码推送时,llm-dev.yml文件会被忽略:

spring:
  config:
    import: classpath:llm-dev.yml
  • 启动SystemApp

About

Spring AI and PGVector 基于个人知识库的AI问答系统,使用Spring AI 1.0版本实现

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •