diff --git a/README.md b/README.md index b261c798224d57724da77b100cccf5c3b238437c..54408d04111acc230983fac4538e3b5250e43ed1 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,9 @@ <div align="center"> <a href="https://demo.ragflow.io/"> -<img src="https://github.com/infiniflow/ragflow/assets/12318111/f034fb27-b3bf-401b-b213-e1dfa7448d2a" width="320" alt="ragflow logo"> +<img src="web/src/assets/logo-with-text.png" width="350" alt="ragflow logo"> </a> </div> - <p align="center"> <a href="./README.md">English</a> | <a href="./README_zh.md">简体ä¸ć–‡</a> @@ -26,27 +25,32 @@ [RAGFlow](http://demo.ragflow.io) is an open-source, Retrieval-Augmented Generation engine built on large language models (LLM), deep document understanding, and multiple recall. It offers a streamlined RAG workflow for businesses of any scale, providing truthful responses with solid citations through a generative AI knowledge management platform. ## 🌟 Key Features - + ### 🍠**"Quality in, quality out"** - - Deep document understanding-based knowledge extraction from unstructured data with complicated formats. - - Finds "needle in a data haystack" of literally unlimited tokens. + +- Deep document understanding-based knowledge extraction from unstructured data with complicated formats. +- Finds "needle in a data haystack" of literally unlimited tokens. ### 🍱 **Template-based chunking** - - Intelligent and explainable. - - Plenty of template options to choose from. + +- Intelligent and explainable. +- Plenty of template options to choose from. ### 🌱 **Grounded citations with reduced hallucinations** - - Visualization of text chunking to allow human intervention. - - Quick view of the key references and traceable citations to support grounded answers. + +- Visualization of text chunking to allow human intervention. +- Quick view of the key references and traceable citations to support grounded answers. ### 🍔 **Compatibility with heterogeneous data sources** - - Supports Word, slides, excel, txt, images, scanned copies, structured data, web pages, and more. + +- Supports Word, slides, excel, txt, images, scanned copies, structured data, web pages, and more. ### 🛀 **Automated and effortless RAG workflow** - - Streamlined RAG orchestration catered to both personal and large businesses. - - Configurable LLMs as well as embedding models. - - Multiple recall paired with fused re-ranking. - - Intuitive APIs for seamless integration with business. + +- Streamlined RAG orchestration catered to both personal and large businesses. +- Configurable LLMs as well as embedding models. +- Multiple recall paired with fused re-ranking. +- Intuitive APIs for seamless integration with business. ## 🔎 System Architecture @@ -65,11 +69,11 @@ ### 🚀 Start up the server -1. Ensure `vm.max_map_count` > 65535: +1. Ensure `vm.max_map_count` > 65535: > To check the value of `vm.max_map_count`: > - > ```bash + > ```bash > $ sysctl vm.max_map_count > ``` > @@ -92,7 +96,7 @@ $ git clone https://github.com/infiniflow/ragflow.git ``` -3. Build the pre-built Docker images and start up the server: +3. Build the pre-built Docker images and start up the server: ```bash $ cd ragflow/docker @@ -102,31 +106,33 @@ > The core image is about 15 GB in size and may take a while to load. 4. Check the server status after having the server up and running: + ```bash $ docker logs -f ragflow-server ``` - *The following output confirms a successful launch of the system:* + + _The following output confirms a successful launch of the system:_ ```bash - ____ ______ __ + ____ ______ __ / __ \ ____ _ ____ _ / ____// /____ _ __ / /_/ // __ `// __ `// /_ / // __ \| | /| / / - / _, _// /_/ // /_/ // __/ / // /_/ /| |/ |/ / - /_/ |_| \__,_/ \__, //_/ /_/ \____/ |__/|__/ - /____/ - + / _, _// /_/ // /_/ // __/ / // /_/ /| |/ |/ / + /_/ |_| \__,_/ \__, //_/ /_/ \____/ |__/|__/ + /____/ + * Running on all addresses (0.0.0.0) * Running on http://127.0.0.1:9380 * Running on http://172.22.0.5:9380 INFO:werkzeug:Press CTRL+C to quit - ``` + ``` 5. In your web browser, enter the IP address of your server as prompted and log in to RAGFlow. 6. In [service_conf.yaml](./docker/service_conf.yaml), select the desired LLM factory in `user_default_llm` and update the `API_KEY` field with the corresponding API key. + > See [./docs/llm_api_key_setup.md](./docs/llm_api_key_setup.md) for more information. - - *The show is now on!* + _The show is now on!_ ## đź”§ Configurations @@ -136,14 +142,14 @@ When it comes to system configurations, you will need to manage the following fi - [service_conf.yaml](./docker/service_conf.yaml): Configures the back-end services. - [docker-compose.yml](./docker/docker-compose.yml): The system relies on [docker-compose.yml](./docker/docker-compose.yml) to start up. -You must ensure that changes to the [.env](./docker/.env) file are in line with what are in the [service_conf.yaml](./docker/service_conf.yaml) file. +You must ensure that changes to the [.env](./docker/.env) file are in line with what are in the [service_conf.yaml](./docker/service_conf.yaml) file. > The [./docker/README](./docker/README.md) file provides a detailed description of the environment settings and service configurations, and you are REQUIRED to ensure that all environment settings listed in the [./docker/README](./docker/README.md) file are aligned with the corresponding configurations in the [service_conf.yaml](./docker/service_conf.yaml) file. To update the default serving port (80), go to [docker-compose.yml](./docker/docker-compose.yml) and change `80:80` to `<YOUR_SERVING_PORT>:80`. > Updates to all system configurations require a system reboot to take effect: -> +> > ```bash > $ docker-compose up -d > ``` @@ -171,4 +177,4 @@ See the [RAGFlow Roadmap 2024](https://github.com/infiniflow/ragflow/issues/162) ## 🙌 Contributing -RAGFlow flourishes via open-source collaboration. In this spirit, we embrace diverse contributions from the community. If you would like to be a part, review our [Contribution Guidelines](https://github.com/infiniflow/ragflow/blob/main/CONTRIBUTING.md) first. +RAGFlow flourishes via open-source collaboration. In this spirit, we embrace diverse contributions from the community. If you would like to be a part, review our [Contribution Guidelines](https://github.com/infiniflow/ragflow/blob/main/CONTRIBUTING.md) first. diff --git a/README_zh.md b/README_zh.md index 2448d615022e992d84a7b891550fbb9d351a531e..c6c2b8acdf76907b0971c4840d859a7d4ce078a8 100644 --- a/README_zh.md +++ b/README_zh.md @@ -1,10 +1,9 @@ <div align="center"> <a href="https://demo.ragflow.io/"> -<img src="https://github.com/infiniflow/ragflow/assets/12318111/f034fb27-b3bf-401b-b213-e1dfa7448d2a" width="320" alt="ragflow logo"> +<img src="web/src/assets/logo-with-text.png" width="350" alt="ragflow logo"> </a> </div> - <p align="center"> <a href="./README.md">English</a> | <a href="./README_zh.md">简体ä¸ć–‡</a> @@ -26,27 +25,32 @@ [RAGFlow](http://demo.ragflow.io) ćŻä¸€ć¬ľĺźşäşŽĺ¤§ĺž‹čŻč¨€ć¨ˇĺž‹ďĽLLM)以及深度文档ç†č§Łćž„建的开ćşćŁ€ç´˘ĺ˘žĺĽşĺž‹ç”źć引擎ďĽRetrieval-Augmented Generation Engine)。RAGFlow 可以为ĺ„种规模的äĽä¸šćŹäľ›ä¸€ĺĄ—精简的 RAG 工作ćµç¨‹,通过生ć式 AI ďĽGenerative AI)知识管ç†ĺąłĺʰćŹäľ›ĺŹŻéť çš„é—®ç”以及有ç†ćś‰ćŤ®çš„引用。 ## 🌟 主č¦ĺŠźč˝ - + ### 🍠**"Quality in, quality out"** - - 基于深度文档ç†č§ŁďĽŚč˝ĺ¤źä»Žĺ„ç±»ĺ¤Ťćť‚ć ĽĺĽŹçš„éťžç»“ćž„ĺŚ–ć•°ćŤ®ä¸ćŹĺŹ–çśźçźĄçĽč§ă€‚ - - çśźćŁĺś¨ć— é™ä¸Šä¸‹ć–‡ďĽtoken)的场景下快速完ć大海捞é’测试。 + +- 基于深度文档ç†č§ŁďĽŚč˝ĺ¤źä»Žĺ„ç±»ĺ¤Ťćť‚ć ĽĺĽŹçš„éťžç»“ćž„ĺŚ–ć•°ćŤ®ä¸ćŹĺŹ–çśźçźĄçĽč§ă€‚ +- çśźćŁĺś¨ć— é™ä¸Šä¸‹ć–‡ďĽtoken)的场景下快速完ć大海捞é’测试。 ### 🍱 **基于模板的文本ĺ‡ç‰‡** - - 不仅仅ćŻć™şč˝ďĽŚć›´é‡Ťč¦çš„ćŻĺŹŻćŽ§ĺŹŻč§Łé‡Šă€‚ - - 多种文本模板可供选择 + +- 不仅仅ćŻć™şč˝ďĽŚć›´é‡Ťč¦çš„ćŻĺŹŻćŽ§ĺŹŻč§Łé‡Šă€‚ +- 多种文本模板可供选择 ### 🌱 **有ç†ćś‰ćŤ®ă€ćś€ĺ¤§ç¨‹ĺş¦é™Ťä˝Žĺą»č§‰ďĽhallucination)** - - 文本ĺ‡ç‰‡čż‡ç¨‹ĺŹŻč§†ĺŚ–ďĽŚć”ŻćŚć‰‹ĺЍč°ć•´ă€‚ - - 有ç†ćś‰ćŤ®ďĽšç”ćˇćŹäľ›ĺ…łé”®ĺĽ•用的快照并支ćŚčż˝ć ąćşŻćşă€‚ + +- 文本ĺ‡ç‰‡čż‡ç¨‹ĺŹŻč§†ĺŚ–ďĽŚć”ŻćŚć‰‹ĺЍč°ć•´ă€‚ +- 有ç†ćś‰ćŤ®ďĽšç”ćˇćŹäľ›ĺ…łé”®ĺĽ•用的快照并支ćŚčż˝ć ąćşŻćşă€‚ ### 🍔 **兼容ĺ„类异构数据ćş** - - 支ćŚä¸°ĺŻŚçš„ć–‡ä»¶ç±»ĺž‹ďĽŚĺŚ…ć‹¬ Word 文档ă€PPTă€excel čˇ¨ć Ľă€txt 文件ă€ĺ›ľç‰‡ă€PDFă€ĺ˝±ĺŤ°ä»¶ă€ĺ¤ŤĺŤ°ä»¶ă€ç»“构化数据, 网页ç‰ă€‚ + +- 支ćŚä¸°ĺŻŚçš„ć–‡ä»¶ç±»ĺž‹ďĽŚĺŚ…ć‹¬ Word 文档ă€PPTă€excel čˇ¨ć Ľă€txt 文件ă€ĺ›ľç‰‡ă€PDFă€ĺ˝±ĺŤ°ä»¶ă€ĺ¤ŤĺŤ°ä»¶ă€ç»“构化数据, 网页ç‰ă€‚ ### 🛀 **ĺ…¨ç¨‹ć— ĺż§ă€č‡ŞĺŠ¨ĺŚ–çš„ RAG 工作ćµ** - - 全面äĽĺŚ–çš„ RAG 工作ćµĺŹŻä»Ąć”ŻćŚä»Žä¸Şäşşĺş”用äąč‡łč¶…大型äĽä¸šçš„ĺ„类生ć€çł»ç»źă€‚ - - 大čŻč¨€ć¨ˇĺž‹ LLM 以及ĺ‘量模型均支ćŚé…Ťç˝®ă€‚ - - 基于多路召回ă€čžŤĺ重排序。 - - ćŹäľ›ć“用的 API,可以轻松集ćĺ°ĺ„ç±»äĽä¸šçł»ç»źă€‚ + +- 全面äĽĺŚ–çš„ RAG 工作ćµĺŹŻä»Ąć”ŻćŚä»Žä¸Şäşşĺş”用äąč‡łč¶…大型äĽä¸šçš„ĺ„类生ć€çł»ç»źă€‚ +- 大čŻč¨€ć¨ˇĺž‹ LLM 以及ĺ‘量模型均支ćŚé…Ťç˝®ă€‚ +- 基于多路召回ă€čžŤĺ重排序。 +- ćŹäľ›ć“用的 API,可以轻松集ćĺ°ĺ„ç±»äĽä¸šçł»ç»źă€‚ ## 🔎 系统架构 @@ -69,7 +73,7 @@ > 如需确认 `vm.max_map_count` 的大小: > - > ```bash + > ```bash > $ sysctl vm.max_map_count > ``` > @@ -102,32 +106,38 @@ > ć ¸ĺżé•śĺŹć–‡ä»¶ĺ¤§çş¦ 15 GB,可č˝éś€č¦ä¸€ĺ®šć—¶é—´ć‹‰ĺŹ–ă€‚čŻ·č€ĺżç‰ĺľ…。 4. 服务器ĺŻĺЍć功ĺŽĺ†Ťć¬ˇçˇ®č®¤ćśŤĺŠˇĺ™¨çŠ¶ć€ďĽš + ```bash $ docker logs -f ragflow-server ``` - *出现以下界面ćŹç¤şčŻ´ćŽćśŤĺŠˇĺ™¨ĺŻĺЍć功:* + + _出现以下界面ćŹç¤şčŻ´ćŽćśŤĺŠˇĺ™¨ĺŻĺЍć功:_ ```bash - ____ ______ __ + ____ ______ __ / __ \ ____ _ ____ _ / ____// /____ _ __ / /_/ // __ `// __ `// /_ / // __ \| | /| / / - / _, _// /_/ // /_/ // __/ / // /_/ /| |/ |/ / - /_/ |_| \__,_/ \__, //_/ /_/ \____/ |__/|__/ - /____/ - + / _, _// /_/ // /_/ // __/ / // /_/ /| |/ |/ / + /_/ |_| \__,_/ \__, //_/ /_/ \____/ |__/|__/ + /____/ + * Running on all addresses (0.0.0.0) * Running on http://127.0.0.1:9380 * Running on http://172.22.0.5:9380 INFO:werkzeug:Press CTRL+C to quit - ``` + ``` 5. ć ąćŤ®ĺšć‰Ťçš„界面ćŹç¤şĺś¨ä˝ 的浏č§ĺ™¨ä¸čľ“ĺ…Ąä˝ çš„ćśŤĺŠˇĺ™¨ĺŻąĺş”çš„ IP 地址并登录 RAGFlow。 > 上面这个例ĺä¸ďĽŚć‚¨ĺŹŞéś€čľ“ĺ…Ą http://172.22.0.5 即可:端口 9380 已通过 Docker 端口ć 射被设置ć 80ďĽé»č®¤çš„ HTTP 服务端口)。 -7. 在 [service_conf.yaml](./docker/service_conf.yaml) 文件的 `user_default_llm` ć Źé…Ťç˝® LLM factory,并在 `API_KEY` ć Źĺˇ«ĺ†™ĺ’Śä˝ é€‰ć‹©çš„ĺ¤§ć¨ˇĺž‹ç›¸ĺŻąĺş”çš„ API key。 +6. 在 [service_conf.yaml](./docker/service_conf.yaml) 文件的 `user_default_llm` ć Źé…Ťç˝® LLM factory,并在 `API_KEY` ć Źĺˇ«ĺ†™ĺ’Śä˝ é€‰ć‹©çš„ĺ¤§ć¨ˇĺž‹ç›¸ĺŻąĺş”çš„ API key。 + + > čŻ¦č§ [./docs/llm_api_key_setup.md](./docs/llm_api_key_setup.md)。 + + _好ćŹĺĽ€ĺ§‹ďĽŚćŽĄçť€ĺĄŹäąćŽĄçť€čžďĽ_ + > čŻ¦č§ [./docs/llm_api_key_setup.md](./docs/llm_api_key_setup.md)。 - - *好ćŹĺĽ€ĺ§‹ďĽŚćŽĄçť€ĺĄŹäąćŽĄçť€čžďĽ* + _好ćŹĺĽ€ĺ§‹ďĽŚćŽĄçť€ĺĄŹäąćŽĄçť€čžďĽ_ ## đź”§ 系统配置 @@ -137,14 +147,14 @@ - [service_conf.yaml](./docker/service_conf.yaml):配置ĺ„ç±»ĺŽĺŹ°ćśŤĺŠˇă€‚ - [docker-compose-CN.yml](./docker/docker-compose-CN.yml): 系统依赖该文件完ćĺŻĺŠ¨ă€‚ -请务必确保 [.env](./docker/.env) 文件ä¸çš„ĺŹé‡Źč®ľç˝®ä¸Ž [service_conf.yaml](./docker/service_conf.yaml) 文件ä¸çš„配置保ćŚä¸€č‡´ďĽ +请务必确保 [.env](./docker/.env) 文件ä¸çš„ĺŹé‡Źč®ľç˝®ä¸Ž [service_conf.yaml](./docker/service_conf.yaml) 文件ä¸çš„配置保ćŚä¸€č‡´ďĽ > [./docker/README](./docker/README.md) 文件ćŹäľ›äş†çŽŻĺ˘ĺŹé‡Źč®ľç˝®ĺ’ŚćśŤĺŠˇé…Ťç˝®çš„čŻ¦ç»†äżˇćŻă€‚请**一定č¦**确保 [./docker/README](./docker/README.md) 文件当ä¸ĺ—出来的环ĺ˘ĺŹé‡Źçš„值与 [service_conf.yaml](./docker/service_conf.yaml) 文件当ä¸çš„系统配置保ćŚä¸€č‡´ă€‚ 如需更新é»č®¤çš„ HTTP 服务端口(80), 可以在 [docker-compose-CN.yml](./docker/docker-compose-CN.yml) 文件ä¸ĺ°†é…Ťç˝® `80:80` 改为 `<YOUR_SERVING_PORT>:80`。 > 所有系统配置é˝éś€č¦é€ščż‡çł»ç»źé‡ŤĺŻç”źć•: -> +> > ```bash > $ docker compose up -f docker-compose-CN.yml -d > ``` @@ -172,4 +182,4 @@ $ docker compose up -d ## 🙌 贡献指南 -RAGFlow 只有通过开ćşĺŤŹä˝ść‰Ťč˝č“¬ĺ‹ĺŹ‘ĺ±•ă€‚ç§‰ćŚčż™ä¸€ç˛ľçĄž,ć‘们欢迎来自社区的ĺ„种贡献。如果您有意参与其ä¸,请查é…ć‘们的[贡献者指南](https://github.com/infiniflow/ragflow/blob/main/CONTRIBUTING.md)。 +RAGFlow 只有通过开ćşĺŤŹä˝ść‰Ťč˝č“¬ĺ‹ĺŹ‘ĺ±•ă€‚ç§‰ćŚčż™ä¸€ç˛ľçĄž,ć‘们欢迎来自社区的ĺ„种贡献。如果您有意参与其ä¸,请查é…ć‘们的[贡献者指南](https://github.com/infiniflow/ragflow/blob/main/CONTRIBUTING.md)。 diff --git a/web/src/assets/logo-with-text.png b/web/src/assets/logo-with-text.png new file mode 100644 index 0000000000000000000000000000000000000000..b55b5e0422fab33cc279681e5d7572f1cd5226d8 Binary files /dev/null and b/web/src/assets/logo-with-text.png differ diff --git a/web/src/layouts/components/header/index.tsx b/web/src/layouts/components/header/index.tsx index c8f2403f5767317c27982cab4408c7cc3df127aa..4dc01915f60490c8f01f09916b0cf848127d22c0 100644 --- a/web/src/layouts/components/header/index.tsx +++ b/web/src/layouts/components/header/index.tsx @@ -55,7 +55,7 @@ const RagHeader = () => { > <Space size={12} onClick={handleLogoClick} className={styles.logoWrapper}> <Logo className={styles.appIcon}></Logo> - <span className={styles.appName}>RagFlow</span> + <span className={styles.appName}>RAGFlow</span> </Space> <Space size={[0, 8]} wrap> <Radio.Group diff --git a/web/src/layouts/components/right-toolbar/index.tsx b/web/src/layouts/components/right-toolbar/index.tsx index a4cce7403595ec009e9f3ec776c4cf19969d6bcb..e5df898f43f6a1c53967a5aa5f5d853e9239d653 100644 --- a/web/src/layouts/components/right-toolbar/index.tsx +++ b/web/src/layouts/components/right-toolbar/index.tsx @@ -1,6 +1,4 @@ -import { ReactComponent as MoonIcon } from '@/assets/svg/moon.svg'; -import { ReactComponent as TranslationIcon } from '@/assets/svg/translation.svg'; -import { BellOutlined, GithubOutlined } from '@ant-design/icons'; +import { GithubOutlined } from '@ant-design/icons'; import { Space } from 'antd'; import React from 'react'; import User from '../user'; @@ -21,15 +19,12 @@ const RightToolBar = () => { <Circle> <GithubOutlined onClick={handleGithubCLick} /> </Circle> - <Circle> + {/* <Circle> <TranslationIcon /> </Circle> - <Circle> - <BellOutlined /> - </Circle> <Circle> <MoonIcon /> - </Circle> + </Circle> */} <User></User> </Space> </div> diff --git a/web/src/pages/add-knowledge/components/knowledge-setting/configuration.tsx b/web/src/pages/add-knowledge/components/knowledge-setting/configuration.tsx index f772eb25ae39e138cefdb9a8389d2b54f874ff56..1f4e05fead829989a8cb58c0de6377641dbedca8 100644 --- a/web/src/pages/add-knowledge/components/knowledge-setting/configuration.tsx +++ b/web/src/pages/add-knowledge/components/knowledge-setting/configuration.tsx @@ -62,7 +62,7 @@ const ConfigurationForm = ({ form }: { form: FormInstance }) => { <Form.Item label="Language" name="language" - initialValue={'Chinese'} + initialValue={'English'} rules={[{ required: true, message: 'Please input your language!' }]} > <Select placeholder="select your language"> diff --git a/web/src/pages/add-knowledge/components/knowledge-setting/utils.ts b/web/src/pages/add-knowledge/components/knowledge-setting/utils.ts index 48e141fe026ee2780402385b7efc127f2f0673c8..57d74c548b4148ef5fe3e2b6435c0871fff3a5c9 100644 --- a/web/src/pages/add-knowledge/components/knowledge-setting/utils.ts +++ b/web/src/pages/add-knowledge/components/knowledge-setting/utils.ts @@ -81,7 +81,7 @@ export const TextMap = { The rĂ©sumĂ© comes in a variety of formats, just like a person’s personality, but we often have to organize them into structured data that makes it easy to search. </p><p> Instead of chunking the rĂ©sumĂ©, we parse the rĂ©sumĂ© into structured data. As a HR, you can dump all the rĂ©sumĂ© you have, - the you can list all the candidates that match the qualifications just by talk with <i>'RagFlow'</i>. + the you can list all the candidates that match the qualifications just by talk with <i>'RAGFlow'</i>. </p> `, }, diff --git a/web/src/pages/user-setting/setting-profile/index.tsx b/web/src/pages/user-setting/setting-profile/index.tsx index bb3e3f9cbb8163e53ab0dc76121199f262202da3..952dc7b16c864fbf20edb7518799de3cb46c5350 100644 --- a/web/src/pages/user-setting/setting-profile/index.tsx +++ b/web/src/pages/user-setting/setting-profile/index.tsx @@ -8,7 +8,7 @@ import { getUploadFileListFromBase64, normFile, } from '@/utils/fileUtil'; -import { PlusOutlined, QuestionCircleOutlined } from '@ant-design/icons'; +import { PlusOutlined } from '@ant-design/icons'; import { Button, Divider, @@ -17,7 +17,6 @@ import { Select, Space, Spin, - Tooltip, Upload, UploadFile, } from 'antd'; @@ -108,9 +107,7 @@ const UserSettingProfile = () => { <Form.Item<FieldType> label={ <div> - <Space> - Your photo - </Space> + <Space>Your photo</Space> <div>This will be displayed on your profile.</div> </div> } @@ -177,8 +174,7 @@ const UserSettingProfile = () => { <Input disabled /> </Form.Item> <p className={parentStyles.itemDescription}> - Once registered, an account cannot be changed and can only be - cancelled. + Once registered, E-mail cannot be changed. </p> </Form.Item> <Form.Item