Skip to content

这不是一个AI大模型,但是可以帮你快速集成AI大模型到Spring项目中,并通过“检索增强生成(RAG)”的方式建立专家知识库帮助大模型回答问题。

License

Notifications You must be signed in to change notification settings

wb04307201/easy-ai-spring-boot-starter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

easy-ai-spring-boot-starter

易智Spring

star fork star fork
MIT JDK SpringBoot

这不是一个AI大模型,但是可以帮你快速集成AI大模型到Spring项目中,
并通过“检索增强生成(RAG)”的方式建立专家知识库帮助大模型回答问题。

核心功能依赖于Spring AI实现,RAG运行原理如下
img_3.png

代码示例

  1. 使用易智Spring实现的AI大模型Demo

快速开始

引入依赖

增加 JitPack 仓库

<repositories>
    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>
</repositories>

引入jar

<dependency>
    <groupId>com.github.wb04307201</groupId>
    <artifactId>easy-ai-spring-boot-starter</artifactId>
    <version>0.6.2</version>
</dependency>

安装向量数据库

通过docker安装chromadb数据库

docker run -d --name chromadb -p 8000:8000 chromadb/chroma

安装大语言模型

默认通过ollama使用大模型,下载并安装

# 拉取qwen2模型
ollama pull qwen2

添加相关配置

spring:
  application:
    name: spring_ai_demo
  ai:
    ollama:
      chat:
        options:
          #  model: llama3
          model: qwen2
      embedding:
        options:
          model: qwen2
      base-url: "http://localhost:11434"
    vectorstore:
      chroma:
        client:
          host: http://localhost
          port: 8000
        collection-name: SpringAiCollection
        initialize-schema: true
    easy:
      defaultSystem:
      enableRag: true
      userTextAdvise: \n上下文信息如下,用---------------------包围\n\n---------------------\n{question_answer_context}\n---------------------\n\n基于上下文和提供的历史信息(而非先验知识),回复用户评论。如果答案不在上下文中,请告知用户无法回答这个问题。\n
      fileStorageServiceClass: cn.wubo.easy.ai.document.impl.LocalDocumentStorageServiceImpl
      fileStorageRecordClass: cn.wubo.easy.ai.document.impl.MemDocumentStorageRecordImpl
      enableWeb: true
      enableRest: true
  servlet:
    multipart:
      max-file-size: 10MB
      max-request-size: 10MB

在启动类上加上@EnableEasyAi注解

@EnableEasyAi
@SpringBootApplication
public class EasyAiDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(EasyAiDemoApplication.class, args);
    }

}

使用检索增强生成(RAG)辅助对话

当未上传知识库时
img_4.png
显然开始胡说八道了

现在让我们上传一些知识库,访问文档上传界面http://ip:端口/easy/ai/list
img.png
状态列显示“向量存储完”即文档已转入知识库

访问聊天界面http://ip:端口/easy/ai/chat
img_5.png

高级

使用其他大模型API

这里以智谱AI为例,如何对接大模型API
修改项目依赖,支持的大模型平台可到Spring AI查看

        <dependency>
            <groupId>com.gitee.wb04307201</groupId>
            <artifactId>easy-ai-spring-boot-starter</artifactId>
            <version>0.6.2</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.ai</groupId>
                    <artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-zhipuai-spring-boot-starter</artifactId>
            <version>1.0.0-SNAPSHOT</version>
        </dependency>

修改配置项目

spring:
  ai:
    zhipuai:
      api-key: 智谱AI API Key

除了大模型API外,向量数据库也可以参照上面的方式进行替换

About

这不是一个AI大模型,但是可以帮你快速集成AI大模型到Spring项目中,并通过“检索增强生成(RAG)”的方式建立专家知识库帮助大模型回答问题。

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published