langchain4j-aideepin/README.md

192 lines
4.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## Getting Started
[READ THIS IN ENGLISH](README_en.md)
**LangChain4j-AIDeepin**
基于 ChatGPT 等大语言模型与 Langchain4j 等应用框架实现,开源、可离线部署的检索增强生成(RAG)项目。
> **该项目如对您有帮助,欢迎点赞**
代码仓库地址:[github](https://github.com/moyangzhan/langchain4j-aideepin) [gitee](https://gitee.com/moyangzhan/langchain4j-aideepin)
## 体验网址
[http://www.aideepin.com](http://www.aideepin.com/)
## 功能点
* 注册&登录
* 多会话(多角色)
* 图片生成(文生图、修图、图生图)
* 提示词
* 额度控制
* 基于大模型的知识库RAG
* 基于大模型的搜索RAG
* 多模型随意切换
* 多搜索引擎随意切换
## 接入的模型:
* ChatGPT 3.5
* 通义千问
* 文心一言
* ollama
* DALL-E 2
## 接入的搜索引擎
Google
Bing (TODO)
百度 (TODO)
## 技术栈
该仓库为后端服务,前端项目见[langchain4j-aideepin-web](https://github.com/moyangzhan/langchain4j-aideepin-web)
后端:
jdk17
springboot3.0.5
[langchain4j(Java version of LangChain)](https://github.com/langchain4j/langchain4j)
**Postgresql(需要安装[pgvector](https://github.com/pgvector/pgvector)扩展)**
前端:
vue3+typescript+pnpm
## 如何部署
### 初始化
**a. 初始化数据库**
* 创建数据库aideepin
* 执行docs/create.sql
* 填充各AI平台的配置(至少设置一个)
openai的secretKey
```plaintext
update adi_sys_config set value = '{"secret_key":"my_openai_secret_key"}' where name = 'openai_setting';
```
灵积大模型平台的apiKey
```plaintext
update adi_sys_config set value = '{"api_key":"my_dashcope_api_key"}' where name = 'dashscope_setting';
```
千帆大模型平台的配置
```plaintext
update adi_sys_config set value = '{"api_key":"my_qianfan_api_key","secret_key":"my_qianfan_secret_key"}' where name = 'qianfan_setting';
```
ollama的配置
```
update adi_sys_config set value = '{"base_url":"my_ollama_base_url"}' where name = 'ollama_setting';
```
* 启用模型或新增模型
```
-- Enable model
update adi_ai_model set is_enable = true where name = 'gpt-3.5-turbo';
update adi_ai_model set is_enable = true where name = 'dall-e-2';
update adi_ai_model set is_enable = true where name = 'qwen-turbo';
update adi_ai_model set is_enable = true where name = 'ernie-3.5-8k-0205';
update adi_ai_model set is_enable = true where name = 'tinydolphin';
-- Add new model
INSERT INTO adi_ai_model (name, type, platform, is_enable) VALUES ('vicuna', 'text', 'ollama', true);
```
* 填充搜索引擎的配置
Google的配置
```
update adi_sys_config set value = '{"url":"https://www.googleapis.com/customsearch/v1","key":"my key from cloud.google.com","cx":"my cx from programmablesearchengine.google.com"}' where name = 'google_setting';
```
**b. 修改配置文件**
* postgresql: application-[dev|prod].xml中的spring.datasource
* redis: application-[dev|prod].xml中的spring.data.redis
* mail: application.xml中的spring.mail
### 编译及运行
* 进入项目
```plaintext
cd langchain4j-aideepin
```
* 打包:
```
mvn clean package -Dmaven.test.skip=true
```
* 运行
a. jar包启动
```plaintext
cd adi-bootstrap/target
nohup java -jar -Xms768m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError adi-bootstrap-0.0.1-SNAPSHOT.jar --spring.profiles.active=[dev|prod] dev/null 2>&1 &
```
b. docker启动
```plaintext
cd adi-bootstrap
docker build . -t aideepin:0.0.1
docker run -d \
--name=aideepin \
-e APP_PROFILE=[dev|prod] \
-v="/data/aideepin/logs:/data/logs" \
aideepin:0.0.1
```
## 待办:
高级RAG
* 查询压缩 √
* 查询路由
* Re-rank
增加搜索引擎BING、百度
## 截图
**AI聊天**
![1691583184761](image/README/1691583184761.png)
**AI画图**
![1691583124744](image/README/1691583124744.png "AI绘图")
**知识库:**
![kbindex](image/README/kbidx.png)
![kb01](image/README/kb01.png)
**向量化:**
![kb02](image/README/kb02.png)
![kb03](image/README/kb03.png)
**额度统计:**
!![1691583329105.png](image%2FREADME%2F1691583329105.png)