## Getting Started [READ THIS IN ENGLISH](README_en.md) **LangChain4j-AIDeepin** 基于 ChatGPT 等大语言模型与 Langchain4j 等应用框架实现,开源、可离线部署的检索增强生成(RAG)项目。 > **该项目如对您有帮助,欢迎点赞** ## 体验网址 [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 * 填充各模型的配置(至少设置一个) 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)