From 5622f4467d899ac7e610f9ad0021c3301d485462 Mon Sep 17 00:00:00 2001 From: csunny Date: Tue, 16 May 2023 16:25:50 +0800 Subject: [PATCH 1/4] Fix: update readme --- README.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 54f1d82b8..f281b90ec 100644 --- a/README.md +++ b/README.md @@ -85,13 +85,13 @@ DB-GPT基于[FastChat](https://github.com/lm-sys/FastChat) 构建大模型运行

核心能力主要有以下几个部分。 -1. 知识库能力 -2. 大模型管理能力 -3. 统一的数据向量化存储与索引 -4. 连接模块 -5. Agent与插件 -6. Prompt自动生成与优化 -7. 多端产品界面 +1. 知识库能力:支持私域知识库问答能力 +2. 大模型管理能力:基于FastChat提供一个大模型的运营环境。 +3. 统一的数据向量化存储与索引:提供一种统一的方式来存储和索引各种数据类型。 +4. 连接模块:用于连接不同的模块和数据源,实现数据的流转和交互。 +5. Agent与插件:提供Agent和插件机制,使得用户可以自定义并增强系统的行为。 +6. Prompt自动生成与优化:自动化生成高质量的Prompt,并进行优化,提高系统的响应效率。 +7. 多端产品界面:支持多种不同的客户端产品,例如Web、移动应用和桌面应用等。 下面对每个模块也做一些简要的介绍: @@ -168,6 +168,7 @@ python llmserver.py ```bash $ python webserver.py ``` +注意: 在启动Webserver之前, 需要修改pilot/configs/model_config.py 文件中的VICUNA_MODEL_SERVER = "http://127.0.0.1:8000", 将地址设置为你的服务器地址。 ## 使用说明 @@ -183,7 +184,7 @@ $ python webserver.py - [FastChat](https://github.com/lm-sys/FastChat) 提供 chat 服务 - [vicuna-13b](https://huggingface.co/Tribbiani/vicuna-13b) 作为基础模型 - [langchain](https://github.com/hwchase17/langchain) 工具链 -- [AutoGPT](https://github.com/Significant-Gravitas/Auto-GPT) 通用的插件模版 +- [Auto-GPT](https://github.com/Significant-Gravitas/Auto-GPT) 通用的插件模版 - [Hugging Face](https://huggingface.co/) 大模型管理 - [Chroma](https://github.com/chroma-core/chroma) 向量存储 - [Milvus](https://milvus.io/) 分布式向量存储 From 759c30eb36fe8604d29d3a1a4950555d5687e0eb Mon Sep 17 00:00:00 2001 From: csunny Date: Tue, 16 May 2023 19:39:15 +0800 Subject: [PATCH 2/4] update --- README.md | 11 ++++++++--- assets/Auto-DB-GPT.png | Bin 0 -> 89924 bytes 2 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 assets/Auto-DB-GPT.png diff --git a/README.md b/README.md index f281b90ec..ed45e7790 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,5 @@ # DB-GPT ![GitHub Repo stars](https://img.shields.io/github/stars/csunny/db-gpt?style=social) ---- [English Edition](README.en.md) ## 背景 @@ -23,8 +22,7 @@ DB-GPT 是一个开源的以数据库为基础的GPT实验项目,使用本地 - SQL自动执行,获取查询结果 - 自动爬取学习知识 - 知识库统一向量存储/索引 - - 非结构化数据支持 - - PDF、MarkDown、CSV、WebURL + - 非结构化数据支持包括PDF、MarkDown、CSV、WebURL ## 效果演示 @@ -54,12 +52,19 @@ DB-GPT 是一个开源的以数据库为基础的GPT实验项目,使用本地

+3. 自动分析执行SQL输出运行结果 + +

+ +

+ ### 数据库问答

+ 1. 基于默认内置知识库问答

diff --git a/assets/Auto-DB-GPT.png b/assets/Auto-DB-GPT.png new file mode 100644 index 0000000000000000000000000000000000000000..56c59045d6554bf55ad2720f4e433cd19702d519 GIT binary patch literal 89924 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 Date: Tue, 16 May 2023 20:12:03 +0800 Subject: [PATCH 3/4] Readme: update english version --- README.en.md | 135 +++++++++++++++++++++++++-------------------------- 1 file changed, 67 insertions(+), 68 deletions(-) diff --git a/README.en.md b/README.en.md index c7048e2e2..1680d1534 100644 --- a/README.en.md +++ b/README.en.md @@ -1,106 +1,99 @@ -# DB-GPT +# DB-GPT ![GitHub Repo stars](https://img.shields.io/github/stars/csunny/db-gpt?style=social) --- [中文版](README.md) -A Open Database-GPT Experiment, interact your data and environment using the local GPT, no data leaks, 100% privately, 100% security. +## What is DB-GPT? + +As large models are released and iterated upon, they are becoming increasingly intelligent. However, in the process of using large models, we face significant challenges in data security and privacy. We need to ensure that our sensitive data and environments remain completely controlled and avoid any data privacy leaks or security risks. Based on this, we have launched the DB-GPT project to build a complete private large model solution for all database-based scenarios. This solution supports local deployment, allowing it to be applied not only in independent private environments but also to be independently deployed and isolated according to business modules, ensuring that the ability of large models is absolutely private, secure, and controllable. +DB-GPT is an experimental open-source project that uses localized GPT large models to interact with your data and environment. With this solution, you can be assured that there is no risk of data leakage, and your data is 100% private and secure. ## Features -We have currently released various features, which are listed below to showcase the capabilities that have been released so far: +Currently, we have released multiple key features, which are listed below to demonstrate our current capabilities: + - SQL language capabilities - SQL generation - SQL diagnosis -- Private domain Q&A and data processing - - Database knowledge Q&A +- Private domain Q&A and data processing + - Database knowledge Q&A - Data processing -- Plugin model - - Supports custom plugins to perform tasks, with native support for Auto-GPT plugins. For example: - - Automatic SQL execution to obtain query results - - Automatic crawling of learning knowledge -- Vector storage/indexing of knowledge base - - Support for unstructured data - - PDF, Markdown, CSV, WebURL +- Plugins + - Support custom plugin execution tasks and natively support the Auto-GPT plugin, such as: + - Automatic execution of SQL and retrieval of query results + - Automatic crawling and learning of knowledge +- Unified vector storage/indexing of knowledge base + - Support for unstructured data such as PDF, Markdown, CSV, and WebURL ## Demo Run on an RTX 4090 GPU. [YouTube](https://www.youtube.com/watch?v=1PWI6F89LPo) + ### Run

- +

+### SQL Generation + +1. Generate Create Table SQL +

- +

-### SQL Generate - -1. Generate SQL based on schema information. - +2. Generating executable SQL:To generate executable SQL, first select the corresponding database and then the model can generate SQL based on the corresponding database schema information. The successful result of running it would be demonstrated as follows:

- -

- -2. Generate executable SQL. -First, select the corresponding database, and then the model can generate SQL based on the corresponding database schema information. The successful execution result is demonstrated below: -

- +

### Q&A

- +

-1. Based on the default built-in knowledge base, question and answer. - -

- -

+1. Based on the default built-in knowledge base, question and answer. + - TODO 2. Add your own knowledge base. -

- -

+ - TODO -3. Learn by scraping data from the internet. -- TODO +3. Learning from crawling data from the Internet + + - TODO -## Architecture Design -[DB-GPT](https://github.com/csunny/DB-GPT) is an experimental open-source application that builds upon the [FastChat](https://github.com/lm-sys/FastChat) model and uses vicuna as its base model. Additionally, it looks like this application incorporates langchain and llama-index embedding knowledge to improve Database-QA capabilities. +## Introduction +DB-GPT creates a vast model operating system using [FastChat](https://github.com/lm-sys/FastChat) and offers a large language model powered by [Vicuna](https://huggingface.co/Tribbiani/vicuna-7b). In addition, we provide private domain knowledge base question-answering capability through LangChain. Furthermore, we also provide support for additional plugins, and our design natively supports the Auto-GPT plugin. + +Is the architecture of the entire DB-GPT shown in the following figure: -Overall, it appears to be a sophisticated and innovative tool for working with databases. If you have any specific questions about how to use or implement DB-GPT in your work, please let me know and I'll do my best to assist you.

-The core capabilities mainly include the following parts: - -1. Knowledge base -2. LLMs management -3. Vector storage and indexing -4. Connections -5. Agent and plugins -6. Prompt generation and optimization -7. Multi-end product interface +The core capabilities mainly consist of the following parts: +1. Knowledge base capability: Supports private domain knowledge base question-answering capability. +2. Large-scale model management capability: Provides a large model operating environment based on FastChat. +3. Unified data vector storage and indexing: Provides a uniform way to store and index various data types. +4. Connection module: Used to connect different modules and data sources to achieve data flow and interaction. +5. Agent and plugins: Provides Agent and plugin mechanisms, allowing users to customize and enhance the system's behavior. +6. Prompt generation and optimization: Automatically generates high-quality prompts and optimizes them to improve system response efficiency. +7. Multi-platform product interface: Supports various client products, such as web, mobile applications, and desktop applications. Below is a brief introduction to each module: -### Knowledge Base +### Knowledge base capability -As the most important scenario for current user needs, we natively support the construction and processing of knowledge bases. At the same time, in this project, we also provide various knowledge base management strategies, such as: - 1. Default built-in knowledge base - 2. Customized new knowledge base - 3. Building knowledge bases through plug-in capabilities and other usage scenarios. - -Users only need to organize their knowledge documents and use our existing capabilities to build the knowledge base required for large models. +As the knowledge base is currently the most significant user demand scenario, we natively support the construction and processing of knowledge bases. At the same time, we also provide multiple knowledge base management strategies in this project, such as: +1. Default built-in knowledge base +2. Custom addition of knowledge bases +3. Various usage scenarios such as constructing knowledge bases through plugin capabilities and web crawling. Users only need to organize the knowledge documents, and they can use our existing capabilities to build the knowledge base required for the large model. ### LLMs Management @@ -126,7 +119,7 @@ Prompt is a very important part of the interaction between the large model and t TODO: In terms of terminal display, we will provide a multi-platform product interface, including PC, mobile phone, command line, Slack and other platforms. -## Deployment +## Deployment ### 1. Hardware Requirements As our project has the ability to achieve ChatGPT performance of over 85%, there are certain hardware requirements. However, overall, the project can be deployed and used on consumer-grade graphics cards. The specific hardware requirements for deployment are as follows: @@ -136,6 +129,7 @@ As our project has the ability to achieve ChatGPT performance of over 85%, there | RTX 4090 | 24 GB | Smooth conversation inference | | RTX 3090 | 24 GB | Smooth conversation inference, better than V100 | | V100 | 16 GB | Conversation inference possible, noticeable stutter | + ### 2. Install This project relies on a local MySQL database service, which you need to install locally. We recommend using Docker for installation. @@ -160,36 +154,41 @@ It is recommended to set the Python package path to avoid runtime errors due to ``` echo "/root/workspace/DB-GPT" > /root/miniconda3/env/dbgpt_env/lib/python3.10/site-packages/dbgpt.pth ``` - +Notice: You need replace the path to your owner. ### 3. Run You can refer to this document to obtain the Vicuna weights: [Vicuna](https://github.com/lm-sys/FastChat/blob/main/README.md#model-weights) . If you have difficulty with this step, you can also directly use the model from [this link](https://huggingface.co/Tribbiani/vicuna-7b) as a replacement. +1. Run server ```bash -$ cd pilot/server -$ python vicuna_server.py +$ python pilot/server/llmserver.py ``` Run gradio webui ```bash -$ python webserver.py +$ python pilot/server/webserver.py ``` +Notice: the webserver need to connect llmserver, so you need change the pilot/configs/model_config.py file. change the VICUNA_MODEL_SERVER = "http://127.0.0.1:8000" to your address. It's very important. ## Usage Instructions We provide a user interface for Gradio, which allows you to use DB-GPT through our user interface. Additionally, we have prepared several reference articles (written in Chinese) that introduce the code and principles related to our project. -1. [大模型实战系列(1) —— 强强联合Langchain-Vicuna应用实战](https://zhuanlan.zhihu.com/p/628750042) -2. [大模型实战系列(2) —— DB-GPT 阿里云部署指南](https://zhuanlan.zhihu.com/p/629467580) -3. [大模型实战系列(3) —— DB-GPT插件模型原理与使用](https://zhuanlan.zhihu.com/p/629623125) +- [LLM Practical In Action Series (1) — Combined Langchain-Vicuna Application Practical](https://medium.com/@cfqcsunny/llm-practical-in-action-series-1-combined-langchain-vicuna-application-practical-701cd0413c9f) -## Thanks +## Acknowledgement -- [FastChat](https://github.com/lm-sys/FastChat) -- [vicuna-13b](https://huggingface.co/Tribbiani/vicuna-13b) -- [langchain](https://github.com/hwchase17/langchain) -- [llama-index](https://github.com/jerryjliu/llama_index) and [In-Context Learning](https://arxiv.org/abs/2301.00234) +The achievements of this project are thanks to the technical community, especially the following projects: +- FastChat for providing chat services +- vicuna-13b as the base model +- langchain tool chain +- Auto-GPT universal plugin template +- Hugging Face for big model management +- Chroma for vector storage +- Milvus for distributed vector storage +- ChatGLM as the base model +- llama-index for enhancing database-related knowledge using in-context learning based on existing knowledge bases. From 5f165b099ae353ee99c30fee4373846766e9809b Mon Sep 17 00:00:00 2001 From: csunny Date: Tue, 16 May 2023 20:21:01 +0800 Subject: [PATCH 4/4] Readme: add contact --- README.en.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.en.md b/README.en.md index 1680d1534..e7e885bac 100644 --- a/README.en.md +++ b/README.en.md @@ -205,3 +205,11 @@ This project follows the git-contributor [spec](https://github.com/xudafeng/git- ## Licence The MIT License (MIT) + +## Contact Information +We are working on building a community, if you have any ideas about building the community, feel free to contact me us. + +name | email| +---------|--------------------- + yushun06| my_prophet@hotmail.com + csunny | cfqcsunny@gmail.com \ No newline at end of file