[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-10721":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":17,"compositeScore":19,"rankGlobal":10,"rankLanguage":10,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":21,"hasPages":21,"topics":23,"createdAt":10,"pushedAt":10,"updatedAt":38,"readmeContent":39,"aiSummary":40,"trendingCount":16,"starSnapshotCount":16,"syncStatus":41,"lastSyncTime":42,"discoverSource":43},10721,"HuixiangDou","InternLM\u002FHuixiangDou","InternLM","HuixiangDou: Overcoming Group Chat Scenarios with LLM-based Technical Assistance","https:\u002F\u002Fopenxlab.org.cn\u002Fapps\u002Fdetail\u002Ftpoisonooo\u002Fhuixiangdou-web",null,"Python",2491,179,25,32,0,1,6,28.77,"BSD 3-Clause \"New\" or \"Revised\" License",false,"main",[24,25,26,27,28,29,30,31,32,33,34,35,36,37],"application","assistant","assistant-chat-bots","chatbot","dsl","group-chat","image-retrieval","lark","llm","multimodal","pipeline","rag","robot","wechat","2026-06-12 02:02:25","\n# 🎚️ Upgrade\n\n[HuixiangDou2](https:\u002F\u002Fgithub.com\u002Ftpoisonooo\u002FHuixiangDou2)(ACL25) is a GraphRAG solution whose effectiveness has been demonstrated in the plant-science domain and that contributed to the [**cover paper in Cell**](https:\u002F\u002Fwww.cell.com\u002Fmolecular-plant\u002Fissue?pii=S1674-2052(24)X0008-8) Molecular Plant. If you work outside computer science, give the new release a try.\n\n---\n\nEnglish | [简体中文](README_zh.md)\n\n\u003Cdiv align=\"center\">\n\n\u003Cimg src=\"resource\u002Flogo_black.svg\" width=\"555px\"\u002F>\n\n\u003Cdiv align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fcdn.vansin.top\u002Finternlm\u002Fdou.jpg\" target=\"_blank\">\n    \u003Cimg alt=\"Wechat\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fwechat-robot%20inside-brightgreen?logo=wechat&logoColor=white\" \u002F>\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fhuixiangdou.readthedocs.io\u002Fen\u002Flatest\u002F\" target=\"_blank\">\n    \u003Cimg alt=\"Readthedocs\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Freadthedocs-chat%20with%20AI-brightgreen?logo=readthedocs&logoColor=white\" \u002F>\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fyoutu.be\u002FylXrT-Tei-Y\" target=\"_blank\">\n    \u003Cimg alt=\"YouTube\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FYouTube-black?logo=youtube&logoColor=red\" \u002F>\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1S2421N7mn\" target=\"_blank\">\n    \u003Cimg alt=\"BiliBili\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FBiliBili-pink?logo=bilibili&logoColor=white\" \u002F>\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002FTW4ZBpZZ\" target=\"_blank\">\n    \u003Cimg alt=\"discord\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdiscord-red?logo=discord&logoColor=white\" \u002F>\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Farxiv.org\u002Fabs\u002F2401.08772\" target=\"_blank\">\n    \u003Cimg alt=\"Arxiv\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Farxiv-2401.08772%20-darkred?logo=arxiv&logoColor=white\" \u002F>\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Farxiv.org\u002Fabs\u002F2405.02817\" target=\"_blank\">\n    \u003Cimg alt=\"Arxiv\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Farxiv-2405.02817%20-darkred?logo=arxiv&logoColor=white\" \u002F>\n  \u003C\u002Fa>\n\u003C\u002Fdiv>\n\n\u003C\u002Fdiv>\n\nHuixiangDou1 is a **professional knowledge assistant** based on LLM.\n\nAdvantages:\n\n1. Design three-stage pipelines of preprocess, rejection and response\n    * `chat_in_group` copes with **group chat** scenario, answer user questions without message flooding, see [2401.08772](https:\u002F\u002Farxiv.org\u002Fabs\u002F2401.08772), [2405.02817](https:\u002F\u002Farxiv.org\u002Fabs\u002F2405.02817), [Hybrid Retrieval](.\u002Fdocs\u002Fen\u002Fdoc_knowledge_graph.md) and [Precision Report](.\u002Fevaluation\u002F)\n    * `chat_with_repo` for **real-time streaming** chat\n2. No training required, with CPU-only, 2G, 10G   configuration\n3. Offers a complete suite of Web, Android, and pipeline source code, industrial-grade and commercially viable\n\nCheck out the [scenes in which HuixiangDou are running](.\u002Fhuixiangdou-inside.md) and current public service status:\n- [readthedocs ChatWithAI](https:\u002F\u002Fhuixiangdou.readthedocs.io\u002Fzh-cn\u002Flatest\u002F) (cpu-only) is available\n- [OpenXLab](https:\u002F\u002Fopenxlab.org.cn\u002Fapps\u002Fdetail\u002Ftpoisonooo\u002Fhuixiangdou-web) is using GPU and under continuous maintenance\n- [WeChat bot](https:\u002F\u002Fcdn.vansin.top\u002Finternlm\u002Fdou.jpg) has a cost associated with WeChat integration. All code has been verified to be functional for one year. Please deploy it on your own for either the [free](https:\u002F\u002Fgithub.com\u002FInternLM\u002FHuixiangDou\u002Fblob\u002Fmain\u002Fdocs\u002Fzh\u002Fdoc_add_wechat_accessibility.md) or [commercial](https:\u002F\u002Fgithub.com\u002FInternLM\u002FHuixiangDou\u002Fblob\u002Fmain\u002Fdocs\u002Fzh\u002Fdoc_add_wechat_commercial.md) version.\n\nIf this helps you, please give it a star ⭐\n\n# 🔆 New Features\n\nOur Web version has been released to [OpenXLab](https:\u002F\u002Fopenxlab.org.cn\u002Fapps\u002Fdetail\u002Ftpoisonooo\u002Fhuixiangdou-web), where you can create knowledge base, update positive and negative examples, turn on web search, test chat, and integrate into Feishu\u002FWeChat groups. See [BiliBili](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1S2421N7mn) and [YouTube](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=ylXrT-Tei-Y) !\n\nThe Web version's API for Android also supports other devices. See [Python sample code](.\u002Ftests\u002Ftest_openxlab_android_api.py).\n\n- \\[2025\u002F03\\] Simplify deployment and removing `--standalone`\n- \\[2025\u002F03\\] [Forwarding multiple wechat group message](.\u002Fdocs\u002Fzh\u002Fdoc_merge_wechat_group.md)\n- \\[2024\u002F09\\] [Inverted indexer](https:\u002F\u002Fgithub.com\u002FInternLM\u002FHuixiangDou\u002Fpull\u002F387) makes LLM prefer knowledge base🎯\n- \\[2024\u002F09\\] [Code retrieval](.\u002Fhuixiangdou\u002Fservices\u002Fparallel_pipeline.py)\n- \\[2024\u002F08\\] [chat_with_readthedocs](https:\u002F\u002Fhuixiangdou.readthedocs.io\u002Fen\u002Flatest\u002F), see [how to integrate](.\u002Fdocs\u002Fzh\u002Fdoc_add_readthedocs.md) 👍\n- \\[2024\u002F07\\] Image and text retrieval & Removal of `langchain` 👍\n- \\[2024\u002F07\\] [Hybrid Knowledge Graph and Dense Retrieval](.\u002Fdocs\u002Fen\u002Fdoc_knowledge_graph.md) improve 1.7% F1 score 🎯\n- \\[2024\u002F06\\] [Evaluation of chunksize, splitter, and text2vec model](.\u002Fevaluation) 🎯\n- \\[2024\u002F05\\] [wkteam WeChat access](.\u002Fdocs\u002Fzh\u002Fdoc_add_wechat_commercial.md), parsing image & URL, support coreference resolution\n- \\[2024\u002F05\\] [SFT LLM on NLP task, F1 increased by 29%](.\u002Fsft\u002F) 🎯\n  \u003Ctable>\n      \u003Ctr>\n          \u003Ctd>🤗\u003C\u002Ftd>\n          \u003Ctd>\u003Ca href=\"https:\u002F\u002Fhuggingface.co\u002Ftpoisonooo\u002FHuixiangDou-CR-LoRA-Qwen-14B\">LoRA-Qwen1.5-14B\u003C\u002Fa>\u003C\u002Ftd>\n          \u003Ctd>\u003Ca href=\"https:\u002F\u002Fhuggingface.co\u002Ftpoisonooo\u002FHuixiangDou-CR-LoRA-Qwen-32B\">LoRA-Qwen1.5-32B\u003C\u002Fa>\u003C\u002Ftd>\n          \u003Ctd>\u003Ca href=\"https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002Ftpoisonooo\u002FHuixiangDou-CR\u002Ftree\u002Fmain\">alpaca data\u003C\u002Fa>\u003C\u002Ftd>\n          \u003Ctd>\u003Ca href=\"https:\u002F\u002Farxiv.org\u002Fabs\u002F2405.02817\">arXiv\u003C\u002Fa>\u003C\u002Ftd>\n      \u003C\u002Ftr>\n  \u003C\u002Ftable>\n- \\[2024\u002F04\\] [RAG Annotation SFT Q&A Data and Examples](.\u002Fdocs\u002Fzh\u002Fdoc_rag_annotate_sft_data.md)\n- \\[2024\u002F04\\] Release [Web Front and Back End Service Source Code](.\u002Fweb) 👍\n- \\[2024\u002F03\\] New [Personal WeChat Integration](.\u002Fdocs\u002Fzh\u002Fdoc_add_wechat_accessibility.md) and [**Prebuilt APK**](https:\u002F\u002Fgithub.com\u002FInternLM\u002FHuixiangDou\u002Freleases\u002Fdownload\u002Fv0.1.0rc1\u002Fhuixiangdou-20240508.apk) !\n- \\[2024\u002F02\\] \\[Experimental Feature\\] [WeChat Group](https:\u002F\u002Fcdn.vansin.top\u002Finternlm\u002Fdou.jpg) Integration of multimodal to achieve OCR\n\n# 📖 Support Status\n\n\u003Ctable align=\"center\">\n  \u003Ctbody>\n    \u003Ctr align=\"center\" valign=\"bottom\">\n      \u003Ctd>\n        \u003Cb>LLM\u003C\u002Fb>\n      \u003C\u002Ftd>\n      \u003Ctd>\n        \u003Cb>File Format\u003C\u002Fb>\n      \u003C\u002Ftd>\n      \u003Ctd>\n        \u003Cb>Retrieval Method\u003C\u002Fb>\n      \u003C\u002Ftd>\n      \u003Ctd>\n        \u003Cb>Integration\u003C\u002Fb>\n      \u003C\u002Ftd>\n      \u003Ctd>\n        \u003Cb>Preprocessing\u003C\u002Fb>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr valign=\"top\">\n      \u003Ctd>\n\n- [DeepSeek](https:\u002F\u002Fwww.deepseek.com)\n- [InternLM](https:\u002F\u002Finternlm.intern-ai.org.cn)\n- [GLM](https:\u002F\u002Fwww.zhipuai.cn)\n- [KIMI](https:\u002F\u002Fkimi.moonshot.cn)\n- [StepFun](https:\u002F\u002Fplatform.stepfun.com)\n- [vLLM](https:\u002F\u002Fgithub.com\u002Fvllm-project\u002Fvllm)\n- [Silicon🏷️](https:\u002F\u002Fcloud.siliconflow.cn\u002Fs\u002Ftpoisonooo)\n- [PPIO🏷️](https:\u002F\u002Fppinfra.com\u002Fuser\u002Fregister?invited_by=7GF8QS) \n- [Xi-Api](https:\u002F\u002Fapi.xi-ai.cn)\n\n\u003C\u002Ftd>\n\u003Ctd>\n\n- excel\n- html\n- markdown\n- pdf\n- ppt\n- txt\n- word\n\n\u003C\u002Ftd>\n\n\u003Ctd>\n\n- Dense for Document\n- Sparse for Code \n- [Knowledge Graph](.\u002Fdocs\u002Fen\u002Fdoc_knowledge_graph.md)\n- [Internet Search](.\u002Fhuixiangdou\u002Fservices\u002Fweb_search.py)\n- [SourceGraph](https:\u002F\u002Fsourcegraph.com)\n- Image and Text\n\n\u003C\u002Ftd>\n\n\u003Ctd>\n\n- WeChat([android](.\u002Fdocs\u002Fzh\u002Fdoc_add_wechat_accessibility.md)\u002F[wkteam](.\u002Fdocs\u002Fzh\u002Fdoc_add_wechat_commercial.md))\n- Lark\n- [OpenXLab Web](https:\u002F\u002Fopenxlab.org.cn\u002Fapps\u002Fdetail\u002Ftpoisonooo\u002Fhuixiangdou-web)\n- [Gradio Demo](.\u002Fhuixiangdou\u002Fgradio_ui.py)\n- [HTTP Server](.\u002Fhuixiangdou\u002Fapi_server.py)\n- [Read the Docs](.\u002Fdocs\u002Fzh\u002Fdoc_add_readthedocs.md)\n\n\u003C\u002Ftd>\n\n\u003Ctd>\n\n- [Coreference Resolution](https:\u002F\u002Farxiv.org\u002Fabs\u002F2405.02817)\n\n\u003C\u002Ftd>\n\n\u003C\u002Ftr>\n\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\n# 📦 Hardware Requirements\n\nThe following are the GPU memory requirements for different features, the difference lies only in whether the **options are turned on**.\n\n|              Configuration Example               | GPU mem Requirements |                                                                                   Description                                                                                   |                       Verified on Linux                        |\n| :----------------------------------------------: | :------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------: |\n|         [config-cpu.ini](.\u002Fconfig-cpu.ini)         |   -    | Use [siliconcloud](https:\u002F\u002Fsiliconflow.cn\u002F) API \u003Cbr\u002F> for text only | ![](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fx86-passed-blue?style=for-the-badge) |\n|   \\[Standard Edition\\][config.ini](.\u002Fconfig.ini)         |         2GB          | Use openai API (such as [kimi](https:\u002F\u002Fkimi.moonshot.cn), [deepseek](https:\u002F\u002Fplatform.deepseek.com\u002Fusage) and [stepfun](https:\u002F\u002Fplatform.stepfun.com\u002F) to search for text only | ![](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F1660ti%206G-passed-blue?style=for-the-badge) |\n| [config-multimodal.ini](.\u002Fconfig-multimodal.ini) |         10GB         |                                                                Use openai API for LLM, image and text retrieval                                                                 | ![](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F3090%2024G-passed-blue?style=for-the-badge)  |\n\n# 🔥 Running the Standard Edition\n\nWe take the standard edition (local running LLM, text retrieval) as an introduction example. Other versions are just different in configuration options.\n\n## I. Download and install dependencies\n\n[Click to agree to the BCE model agreement](https:\u002F\u002Fhuggingface.co\u002Fmaidalun1020\u002Fbce-embedding-base_v1), log in huggingface\n\n```shell\nhuggingface-cli login\n```\n\nInstall dependencies\n\n```bash\n# parsing `word` format requirements\napt update\napt install python-dev libxml2-dev libxslt1-dev antiword unrtf poppler-utils pstotext tesseract-ocr flac ffmpeg lame libmad0 libsox-fmt-mp3 sox libjpeg-dev swig libpulse-dev\n# python requirements\npip install -r requirements.txt\n# For python3.8, install faiss-gpu instead of faiss\n```\n\n## II. Create knowledge base\n\nWe use some novels to build knowledge base and filtering questions. If you have your own documents, just put them under `repodir`.\n\nCopy and execute all the following commands (including the '#' symbol).\n\n```shell\n# Download the knowledge base, we only take the some documents as example. You can put any of your own documents under `repodir`\ncd HuixiangDou\nmkdir repodir\ncp -rf resource\u002Fdata* repodir\u002F\n\n# Build knowledge base, this will save the features of repodir to workdir, and update the positive and negative example thresholds into `config.ini`\nmkdir workdir\npython3 -m huixiangdou.services.store\n\n# You can also build knowledge base from QA pairs (CSV or JSON format)\n# CSV: First column is key (question), second column is value (answer)\n# JSON: {\"question1\": \"answer1\", \"question2\": \"answer2\", ...}\n# python3 -m huixiangdou.services.store --qa-pair resource\u002Fdata\u002Fqa_pair.csv\n```\n\n## III. Setup LLM API and test\nSet the model and `api-key` in `config.ini`. If running LLM locally, we recommend using `vllm`.\n\n```text\nvllm serve \u002Fpath\u002Fto\u002FQwen-2.5-7B-Instruct --served-model-name vllm --enable-prefix-caching --served-model-name Qwen-2.5-7B-Instruct\n```\n\nHere is an example of the configured `config.ini`:\n\n```ini\n[llm.server]\nremote_type = \"kimi\"\nremote_api_key = \"sk-dp3GriuhhLXnYo0KUuWbFUWWKOXXXXXXXXXX\"\nremote_llm_model = \"auto\"\n\n# remote_type = \"step\"\n# remote_api_key = \"5CpPyYNPhQMkIzs5SYfcdbTHXq3a72H5XXXXXXXXXXXXX\"\n# remote_llm_model = \"auto\"\n\n# remote_type = \"deepseek\"\n# remote_api_key = \"sk-86db9a205aa9422XXXXXXXXXXXXXX\"\n# remote_llm_model = \"deepseek-chat\"\n\n# remote_type = \"vllm\"\n# remote_api_key = \"EMPTY\"\n# remote_llm_model = \"Qwen2.5-7B-Instruct\"\n\n# remote_type = \"siliconcloud\"\n# remote_api_key = \"sk-xxxxxxxxxxxxx\"\n# remote_llm_model = \"alibaba\u002FQwen1.5-110B-Chat\"\n\n# remote_type = \"ppio\"\n# remote_api_key = \"sk-xxxxxxxxxxxxx\"\n# remote_llm_model = \"thudm\u002Fglm-4-9b-chat\"\n```\n\nThen run the test:\n\n```text\n# Respond to questions related to the Hundred-Plant Garden (related to the knowledge base), but do not respond to weather questions.\npython3 -m huixiangdou.main\n\n+-----------------------+---------+--------------------------------+-----------------+\n|         Query         |  State  |         Reply                  |   References    |\n+=======================+=========+================================+=================+\n| What is in the Hundred-Plant Garden? | success | The Hundred-Plant Garden has a rich variety of natural landscapes and life... | installation.md |\n--------------------------------------------------------------------------------------\n| How is the weather today?         | Init state| ..                           |                 |\n+-----------------------+---------+--------------------------------+-----------------+\n🔆 Input your question here, type `bye` for exit:\n..\n```\n\n💡 Also run a simple Web UI with `gradio`:\n\n```bash\npython3 -m huixiangdou.gradio_ui\n```\n\n\u003Cvideo src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F9e5dbb30-1dc1-42ad-a7d4-dc7380676554\" >\u003C\u002Fvideo>\n\nOr run a server to listen 23333, default pipeline is `chat_with_repo`:\n```bash\npython3 -m huixiangdou.api_server\n\n# test async API \ncurl -X POST http:\u002F\u002F127.0.0.1:23333\u002Fhuixiangdou_stream  -H \"Content-Type: application\u002Fjson\" -d '{\"text\": \"how to install mmpose\",\"image\": \"\"}'\n# cURL sync API\ncurl -X POST http:\u002F\u002F127.0.0.1:23333\u002Fhuixiangdou_inference  -H \"Content-Type: application\u002Fjson\" -d '{\"text\": \"how to install mmpose\",\"image\": \"\"}'\n```\n\n\nPlease update the `repodir` documents, [good_questions](.\u002Fresource\u002Fgood_questions.json) and [bad_questions](.\u002Fresource\u002Fbad_questions.json), and try your own domain knowledge (medical, financial, power, etc.).\n\n## IV. Integration\n\n### To Feishu, WeChat group\n\n- [**One-way** sending to Feishu group](.\u002Fdocs\u002Fzh\u002Fdoc_send_only_lark_group.md)\n- [**Two-way** Feishu group receiving and sending, recalling](.\u002Fdocs\u002Fzh\u002Fdoc_add_lark_group.md)\n- [Personal WeChat Android access](.\u002Fdocs\u002Fzh\u002Fdoc_add_wechat_accessibility.md) and [Android tool](.\u002Fandroid)\n- [Personal WeChat wkteam access](.\u002Fdocs\u002Fzh\u002Fdoc_add_wechat_commercial.md)\n\n### To web front and backend\n\nWe provide `typescript` front-end and `python` back-end source code:\n\n- Multi-tenant management supported\n- Zero programming access to Feishu and WeChat\n- k8s friendly\n\nSame as [OpenXlab APP](https:\u002F\u002Fopenxlab.org.cn\u002Fapps\u002Fdetail\u002Ftpoisonooo\u002Fhuixiangdou-web), please read the [web deployment document](.\u002Fweb\u002FREADME.md).\n\n### To readthedocs.io\n\n[Try right-bottom button on the page](https:\u002F\u002Fhuixiangdou.readthedocs.io\u002Fzh-cn\u002Flatest\u002F) and [document](.\u002Fdocs\u002Fzh\u002Fdoc_add_readthedocs.md).\n\n# 🍴 Other Configurations\n\n## **CPU-only Edition**\n\nIf there is no GPU available, model inference can be completed using the [siliconcloud](https:\u002F\u002Fsiliconflow.cn\u002F) API.\n\nTaking docker miniconda+Python3.11 as an example, install CPU dependencies and run:\n\n```bash\n# Start container\ndocker run -v \u002Fpath\u002Fto\u002Fhuixiangdou:\u002Fhuixiangdou -p 7860:7860 -p 23333:23333 -it continuumio\u002Fminiconda3 \u002Fbin\u002Fbash\n# Install dependencies\napt update\napt install python-dev libxml2-dev libxslt1-dev antiword unrtf poppler-utils pstotext tesseract-ocr flac ffmpeg lame libmad0 libsox-fmt-mp3 sox libjpeg-dev swig libpulse-dev\npython3 -m pip install -r requirements-cpu.txt\n# Establish knowledge base\npython3 -m huixiangdou.services.store --config_path config-cpu.ini\n# Q&A test\npython3 -m huixiangdou.main --config_path config-cpu.ini\n# gradio UI\npython3 -m huixiangdou.gradio_ui --config_path config-cpu.ini\n```\n\nIf you find the installation too slow, a pre-installed image is provided in [Docker Hub](https:\u002F\u002Fhub.docker.com\u002Frepository\u002Fdocker\u002Ftpoisonooo\u002Fhuixiangdou\u002Ftags). Simply replace it when starting the docker.\n\n## **10G Multimodal Edition**\n\nIf you have 10G GPU mem, you can further support image and text retrieval. Just modify the model used in config.ini.\n\n```toml\n# config-multimodal.ini\n# !!! Download `https:\u002F\u002Fhuggingface.co\u002FBAAI\u002Fbge-visualized\u002Fblob\u002Fmain\u002FVisualized_m3.pth`    to `bge-m3` folder !!!\nembedding_model_path = \"BAAI\u002Fbge-m3\"\nreranker_model_path = \"BAAI\u002Fbge-reranker-v2-minicpm-layerwise\"\n```\n\nNote:\n\n- You need to manually download [Visualized_m3.pth](https:\u002F\u002Fhuggingface.co\u002FBAAI\u002Fbge-visualized\u002Fblob\u002Fmain\u002FVisualized_m3.pth) to the [bge-m3](https:\u002F\u002Fhuggingface.co\u002FBAAI\u002Fbge-m3) directory\n- Install FlagEmbedding on main branch, we have made [bugfix](https:\u002F\u002Fgithub.com\u002FFlagOpen\u002FFlagEmbedding\u002Fcommit\u002F3f84da0796d5badc3ad519870612f1f18ff0d1d3). [Here](https:\u002F\u002Fgithub.com\u002FFlagOpen\u002FFlagEmbedding\u002Fblob\u002Fmaster\u002FFlagEmbedding\u002Fvisual\u002Feva_clip\u002Fbpe_simple_vocab_16e6.txt.gz) you can download `bpe_simple_vocab_16e6.txt.gz` \n- Install [requirements\u002Fmultimodal.txt](.\u002Frequirements\u002Fmultimodal.txt)\n\nRun gradio to test, see the image and text retrieval result [here](https:\u002F\u002Fgithub.com\u002FInternLM\u002FHuixiangDou\u002Fpull\u002F326).\n\n```bash\npython3 tests\u002Ftest_query_gradio.py\n```\n\n## **Furthermore**\n\nPlease read the following topics:\n\n- [Hybrid knowledge graph and dense retrieval](.\u002Fdocs\u002Fen\u002Fdoc_knowledge_graph.md)\n- [Refer to config-advanced.ini configuration to improve effects](.\u002Fdocs\u002Fen\u002Fdoc_full_dev.md)\n- [Group chat scenario anaphora resolution training](.\u002Fsft)\n- [Use wkteam WeChat access, integrate images, public account parsing, and anaphora resolution](.\u002Fdocs\u002Fzh\u002Fdoc_add_wechat_commercial.md)\n- [Use rag.py to annotate SFT training data](.\u002Fdocs\u002Fzh\u002Fdoc_rag_annotate_sft_data.md)\n\n# 🛠️ FAQ\n\n1. What if the robot is too cold\u002Ftoo chatty?\n\n   - Fill in the questions that should be answered in the real scenario into `resource\u002Fgood_questions.json`, and fill the ones that should be rejected into `resource\u002Fbad_questions.json`.\n   - Adjust the theme content in `repodir` to ensure that the markdown documents in the main library do not contain irrelevant content.\n\n   Re-run `feature_store` to update thresholds and feature libraries.\n\n   ⚠️ You can directly modify `reject_throttle` in config.ini. Generally speaking, 0.5 is a high value; 0.2 is too low.\n\n2. Launch is normal, but out of memory during runtime?\n\n   LLM long text based on transformers structure requires more memory. At this time, kv cache quantization needs to be done on the model, such as [lmdeploy quantization description](https:\u002F\u002Fgithub.com\u002FInternLM\u002Flmdeploy\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fquantization). Then use docker to independently deploy Hybrid LLM Service.\n\n7. `No module named 'faiss.swigfaiss_avx2'` \n\n   locate installed `faiss` package\n   \n   ```python\n   import faiss\n   print(faiss.__file__)\n   # \u002Froot\u002F.conda\u002Fenvs\u002FInternLM2_Huixiangdou\u002Flib\u002Fpython3.10\u002Fsite-packages\u002Ffaiss\u002F__init__.py\n   ```\n\n   add soft link\n\n   ```Bash\n   # cd your_python_path\u002Fsite-packages\u002Ffaiss\n   cd \u002Froot\u002F.conda\u002Fenvs\u002FInternLM2_Huixiangdou\u002Flib\u002Fpython3.10\u002Fsite-packages\u002Ffaiss\u002F\n   ln -s swigfaiss.py swigfaiss_avx2.py\n   ```\n\n# 🍀 Acknowledgements\n\n- [KIMI](https:\u002F\u002Fkimi.moonshot.cn\u002F): Long text LLM, supports direct file upload\n- [FlagEmbedding](https:\u002F\u002Fgithub.com\u002FFlagOpen\u002FFlagEmbedding): BAAI RAG group\n- [BCEmbedding](https:\u002F\u002Fgithub.com\u002Fnetease-youdao\u002FBCEmbedding): Chinese-English bilingual feature model\n- [Langchain-ChatChat](https:\u002F\u002Fgithub.com\u002Fchatchat-space\u002FLangchain-Chatchat): Application of Langchain and ChatGLM\n- [GrabRedEnvelope](https:\u002F\u002Fgithub.com\u002Fxbdcc\u002FGrabRedEnvelope): WeChat red packet grab\n\n# 📝 Citation\n\n```shell\n@misc{kong2024huixiangdou,\n      title={HuiXiangDou: Overcoming Group Chat Scenarios with LLM-based Technical Assistance},\n      author={Huanjun Kong and Songyang Zhang and Jiaying Li and Min Xiao and Jun Xu and Kai Chen},\n      year={2024},\n      eprint={2401.08772},\n      archivePrefix={arXiv},\n      primaryClass={cs.CL}\n}\n\n@misc{kong2024labelingsupervisedfinetuningdata,\n      title={Labeling supervised fine-tuning data with the scaling law}, \n      author={Huanjun Kong},\n      year={2024},\n      eprint={2405.02817},\n      archivePrefix={arXiv},\n      primaryClass={cs.CL},\n      url={https:\u002F\u002Farxiv.org\u002Fabs\u002F2405.02817}, \n}\n\n@misc{kong2025huixiangdou2robustlyoptimizedgraphrag,\n      title={HuixiangDou2: A Robustly Optimized GraphRAG Approach}, \n      author={Huanjun Kong and Zhefan Wang and Chenyang Wang and Zhe Ma and Nanqing Dong},\n      year={2025},\n      eprint={2503.06474},\n      archivePrefix={arXiv},\n      primaryClass={cs.IR},\n      url={https:\u002F\u002Farxiv.org\u002Fabs\u002F2503.06474}, \n}\n```\n","HuixiangDou 是一个基于大语言模型（LLM）的专业知识助手。它设计了三阶段流水线，包括预处理、拒绝和响应，特别适用于群聊场景，能够在不引起消息泛滥的情况下回答用户问题，并支持实时流式聊天。该项目无需训练即可运行，仅需CPU配置，内存要求低至2GB。此外，它提供了一整套Web、Android应用及流水线源代码，达到工业级标准并具有商业可行性。HuixiangDou 适合需要在团队沟通中引入智能辅助的场景，如企业内部交流、在线教育平台等。",2,"2026-06-11 03:29:53","top_topic"]