内容
# AgnosticRag-Q
**AgnosticRag-Q** 是一个云无关和LLM无关的**智能AI与检索增强生成(RAG)平台**,采用干净的模块化架构。它支持文本、CSV、图像、音频、企业应用程序(如**Odoo**)、混合搜索、多模态检索、智能路由和可配置的运行时行为。
它提供:
- 一个**核心RAG API**
- 一个智能路由层(**AgnosticRagRouter**)
- 一个MCP集成层(**AgnosticRagMCP**)
- 企业应用程序集成(Odoo、PostgreSQL和自定义MCP服务)
- 一个GraphRAG层,结合Qdrant向量搜索和Neo4j知识图谱
- 以及一个**图形用户界面应用程序**,它消耗这些后端
允许您构建、扩展和部署可扩展的多后端AI系统,这些系统结合了私有知识库、企业应用程序和多个LLM提供商。
该项目故意设计为**提供商无关**,使得在不更改业务逻辑的情况下,在LLM提供商、嵌入模型、向量存储、企业连接器和检索策略之间轻松切换成为可能。
`AgnosticRagRouter`引入了一个智能AI编排层,它会自动为每个请求选择最合适的后端或企业服务。根据查询,它可以路由到文档集合(TXT、CSV、图像、音频)、GraphRAG、Odoo ERP、PostgreSQL或任何自定义MCP服务,使用可配置的路由策略和LLM辅助决策。
该平台设计用于**模块化部署**,其中多个RAG后端和企业服务独立运行。可以为文本、图像、音频、特定领域知识、Odoo ERP、数据库和自定义业务系统部署专用服务,而路由器会动态地将请求调度到最相关的目的地。
`AgnosticRagMCP`通过**模型上下文协议(MCP)**扩展了平台的功能,使与外部应用程序、企业系统和通信渠道的无缝集成成为可能。它支持诸如Telegram、WhatsApp、Microsoft Teams、Odoo、PostgreSQL、Google Drive和自定义企业MCP服务器等连接器,允许用户和业务应用程序通过统一的AI接口与RAG知识库和企业系统进行交互。
<table>
<tr>
<td align="center">
<b>完整的RAG与翻译</b><br>
<a href="https://www.youtube.com/watch?v=GIbtlLuHlyg">
<img src="https://img.youtube.com/vi/GIbtlLuHlyg/maxresdefault.jpg" width="400">
</a>
</td>
<td align="center">
<b>完整的RAG与图像/ PDF</b><br>
<a href="https://www.youtube.com/watch?v=aKKh4YvL17s">
<img src="./images/Main4.PNG" width="800" alt="完整的RAG与图像/ PDF">
</a>
</td>
</tr>
<tr>
<td align="center">
<b>完整的RAG与医疗数据CSV表格</b><br>
<a href="https://www.youtube.com/watch?v=8koN_m8l39s">
<img src="https://img.youtube.com/vi/8koN_m8l39s/maxresdefault.jpg" width="800">
</a>
</td>
<td align="center">
<b>完整的RAG与图像:按图像或文本搜索</b><br>
<a href="https://www.youtube.com/watch?v=BzggFYE44i8">
<img src="https://img.youtube.com/vi/BzggFYE44i8/maxresdefault.jpg" width="400">
</a>
</td>
</tr>
<tr>
<td align="center">
<b>视觉搜索AgnosticRAG</b><br>
<a href="https://www.youtube.com/watch?v=-IU3sSE7fD8">
<img src="https://img.youtube.com/vi/-IU3sSE7fD8/maxresdefault.jpg" width="800">
</a>
</td>
<td align="center">
<b>在TXT和CSV中使用AgnosticRagRouter搜索</b><br>
<a href="https://www.youtube.com/watch?v=fOU6PBjQch8">
<img src="https://img.youtube.com/vi/fOU6PBjQch8/maxresdefault.jpg" width="800">
</a>
</td>
</tr>
<tr>
<td align="center">
<b>AgnosticRagMCP Telegram</b><br>
<a href="https://www.youtube.com/watch?v=ZF_NdOJTzfo">
<img src="https://img.youtube.com/vi/ZF_NdOJTzfo/maxresdefault.jpg" width="800">
</a>
</td>
<td align="center">
<b>AgnosticRagMCP MS Teams</b><br>
<a href="https://www.youtube.com/watch?v=WLbRCGKRDdo">
<img src="https://img.youtube.com/vi/WLbRCGKRDdo/maxresdefault.jpg" width="800">
</a>
</td>
</tr>
<tr>
<td align="center">
<b>使用Qdrant + Neo4j的GraphRAG</b><br>
<a href="https://www.youtube.com/watch?v=dbYoXbP0LSg">
<img src="https://img.youtube.com/vi/dbYoXbP0LSg/maxresdefault.jpg" width="800">
</a>
</td>
<td align="center">
<b>完整示例:Txt,CSV,图像,音频和图</b><br>
<a href="https://www.youtube.com/watch?v=_LZ2YVS9wwI">
<img src="images/full_example_thumbnail.png" width="800">
</a>
</td>
</tr>
</table>
## ✨ 主要亮点
- **核心多模态 RAG API**,采用清洁、可扩展的架构构建
- **配置驱动** `rag_settings.json`(模型、重排序、切分、提示),`graph_rag_settings.json`(允许的关系类型、图提取提示、实体/关系规则)
- **AgnosticRagRouter**,基于智能 LLM 的后端路由和多后端编排
- **配置驱动 AgnosticRagRouter** `router_settings.json`(路由规则、后端、提示、重试、阈值)
- **AgnosticRagMCP**,基于 MCP 的外部集成层(Odoo、PostgreSQL、Telegram、WhatsApp、MS Teams、Google Drive、外部企业工具和驱动)
- **配置驱动 AgnosticRagMCP** `mcp_settings.json`(whatsapp、telegram、microsoft_teams)
- **企业 AI 集成**,与 Odoo ERP、PostgreSQL 和自定义 MCP 服务等业务系统集成
- **可插拔的 LLM 提供商**(本地和远程):(OpenAI、Gemini、Ollama、Hugging Face Transformers 和本地模型)
- **水平可扩展**(云 /本地)
- **基于 Redis** 的对话历史记录(app_id / user_id / session_id)
- **基于 Qdrant** 的向量搜索,支持多种数据源选项
- **Qdrant 混合搜索**,BM25(稀疏)+ Dense embeddings
- **GraphRAG**,使用 **Qdrant + Neo4j** 进行混合语义和基于关系的检索
- **重写提示**,创建独立的检索查询,从(最终查询 + 简短历史)
- **灵活的摄入**,支持 CSV(表格字段提取)、TXT(基于段落的切分)、PDF、图像和音频(语音)
- **多向量图像/ PDF 检索**,使用 **ColQwen / ColPali**
- **可选的 Muvera 固定维编码(FDE)**,用于快速图像检索
- **支持多模态查询**:文本、图像、音频、文本+图像、文本+音频
- **音频搜索**,使用 Whisper + CLAP 与 Qdrant/Neo4j
- **音频查询支持**,通过上传音频文件或文本搜索
- **混合音频转录搜索**,BM25(稀疏)+ Dense embeddings
- **内置缓存系统**:
- 内存 **引擎缓存**(避免重载沉重的模型)
- **媒体/查询结果缓存**,可选用于图像和音频查询
- 可配置的缓存限制和 TTL,用于性能调优
- **基于 Docker 的模块化部署**:
- 运行单独的 RAG 后端,每个模态(文本/图像/音频/CSV)
- 每个后端连接到其自己的集合或配置
- 路由器动态调度查询到最佳后端
- UI 可以动态选择目标后端(例如,文本、图像、音频、路由器)
- 可扩展、隔离且适用于生产的架构
- **用于快速测试的简单 UI**,使用核心 API / AgnosticRagRouter 作为其后端
---
- **重写提示**
```bash
用户查询
↓
加载 Redis 最近的 N 条记录(例如 2-3 条)
↓
重写 LLM(提示之上)
↓
重写的查询
↓
嵌入
↓
Qdrant
```
- **重写提示 + GraphRAG 检索**
```bash
用户查询
↓
加载 Redis 最近的 N 条记录(例如 2-3 条)
↓
重写 LLM
↓
重写的查询
↓
嵌入
↓
Qdrant 语义搜索
↓
(可选)Neo4j 图搜索
↓
合并语义 + 图结果
↓
LLM 答案
```
---
- **配置驱动** `rag_settings.json`(模型、重排序、切分、提示)
```bash
{
"api_base_url": "http://localhost:8000",
"qdrant_url": "http://localhost:6333",
"collection_prefix": "ManyImages-",
"collection_name": "ManyImages-__vidore_colpali-v1.3__multivector_image__dim128__muvera",
"enable_neo4j_with_qdrant": false,
"graph_store_provider": "neo4j",
"topk_retrieve": 10,
"topk_use": 5,
"enable_rerank": false,
"text_group_lines": 1,
"txt_chunk_chars": 900,
"txt_overlap": 120,
"batch_size": 64,
"is_paragraph_enable": false,
"paragraph_end_str": "",
"include_marker": false,
"marker_contains": false,
"enable_structured_csv_lookup": false,
"enable_exact_filter_first": false,
"enable_qdrant_hybrid_search_csv": false,
"use_qdrant_hybrid_search_csv": false,
"enable_muvera_for_multi_vector_image": true,
"use_muvera_for_multi_vector_image": false,
"send_images_to_final_chat_for_multi_vector_image": true,
"docs_dir": "rag_data\\my_csvs\\docs",
"rerank_prompt_template": "You are a retrieval re-ranker.\nGiven a user question and a list of candidate contexts, select the most relevant items.\nRules:\n- Choose exactly {choose_k} distinct indices.\n- Prefer contexts that directly contain facts needed to answer.\n- Avoid redundant/duplicate contexts.\n- Output ONLY valid JSON, no extra text.\n\nReturn JSON format:\n{{\n \"selected_indices\": [0, 2, 5],\n \"reasons\": [\"short reason 1\", \"short reason 2\", \"short reason 3\"]\n}}\n\nQuestion:\n{query}\n\nCandidates:\n{candidates}",
"answer_prompt_template": "You are an assistant that answers strictly from retrieved context.\n\nIMPORTANT RULES:\n- Use ONLY the information in the Context.\n- First, check if there is an EXACT match to the Question (all provided key=value pairs) in a single Context row.\n- If there is an exact match:\n - Output ONLY the value of Initial_ActivityDenialCode from that row.\n- If there is NO exact match but Context is not empty:\n - Output:\n Closest match (not exact).\n - List differing fields (requested vs found).\n - Then output ONLY the value of Initial_ActivityDenialCode from the closest-match row (the highest score row).\n- If Context is empty:\n - Reply exactly: \"I don't know based on the provided context.\"\n- Do NOT add any other text.\n\nContext:\n{context}\n\nQuestion:\n{query}\n\nAnswer:",
"answer_prompt_template_image": " You are an assistant that answers the user's question based on retrieved image(s) and recent conversation history.\n \n The retrieved images are provided as attachments alongside this prompt.\n\n Rules:\n - For questions about the images, answer using the visual content of the attached images.\n - For meta-questions about the conversation (e.g. \\\"what did I just ask?\\\"), answer from the Conversation history below.\n - If the images do not contain enough information to answer, reply exactly: \\\"I don't know based on the retrieved images.\\\"\n - Keep the answer clear and concise.\\n\\nConversation history (most recent last):\n {history}\n \n Retrieved image references (for traceability):\n {context}\n \n Question: {query}\n \n Answer:",
"answer_prompt_template_audio": "You are an assistant that answers using BOTH the retrieved context and the recent conversation history.\n\nIMPORTANT RULES:\n- Prefer the Context for factual answers.\n- Use History only for continuity (follow-ups, pronouns).\n- DO NOT repeat the question.\n- DO NOT hallucinate or add information not present in the Context.\n- If the answer is not found in Context, reply exactly:\n \"I don't know based on the provided context.\"\n\nOUTPUT FORMAT (STRICT):\n\n1) First: provide a clean and concise answer.\n2) Then: append the section EXACTLY as shown below.\n\nAssistant:\n<final answer>\n\nSelected Context:\n<context exactly as provided below, DO NOT modify, DO NOT summarize, DO NOT reorder>\n\n---\n\nHistory (last turns):\n{history}\n\nContext:\n{context}\n\nQuestion: {query}\n\nAnswer:",
"translate_prompt_template": "You are a translation engine.\n\n Task:\n - Translate the user text into natural English.\n Rules:\n - Output ONLY the English translation.\n - No explanations, no quotes, no extra text.\n - Keep proper nouns, IDs, emails, URLs, and numbers unchanged.\n - If the text is already English, output it unchanged.\n\n User text:\n {text}",
"rewrite_prompt_template": "You are a query rewriting assistant for a retrieval-augmented generation (RAG) system.\n\nYour job is to rewrite the user's current message into a single, clear, standalone search query\nthat can be used to retrieve documents from a vector database.\n\nRules:\n- Use the conversation only to resolve references (e.g. \"it\", \"that\", \"the second one\").\n- Do NOT introduce new topics.\n- Do NOT answer the user.\n- Do NOT include chatty or conversational text.\n- Output ONLY the rewritten search query.\n- If the user query is already clear and standalone, return it unchanged.\n\nRecent conversation:\n{history}\n\nCurrent user question:\n{query}\n\nRewrite this into one concise standalone retrieval query.",
"enable_auto_translate": false,
"enable_rewrite": false,
"embedding_model": "vidore/colqwen2-v1.0",
"main_model": "gpt-4o-mini",
"translate_model": "qwen3:1.7b",
"rewrite_model": "gpt-4o-mini",
"main_provider": "openai",
"embedding_provider": "colqwen",
"translate_provider": "ollama",
"rewrite_provider": "openai",
"transformer_device": "cpu",
"transformer_trust_remote_code": true,
"transformer_local_files_only": false,
"transformer_embedding_trust_remote_code": false,
"transformer_embedding_local_files_only": false,
"transformer_embedding_backend": "auto",
"transformer_embedding_normalize": true,
"transformer_embedding_max_length": 512,
"transformer_embedding_prompt_prefix": "query: ",
"transformer_embedding_model_path": "",
"transformer_chat_backend": "causal",
"transformer_chat_model_path": "",
"transformer_chat_prompt": "{joined}",
"transformer_max_new_tokens": 128,
"transformer_temperature": 0.0,
"transformer_top_p": 0.9,
"transformer_do_sample": false,
"transformer_system_prompt": "",
"transformer_max_input_length": 2048,
"audio_clap_enable": false,
"enable_text_transcript_audio_one_search_qdrant": false,
"audio_clap_model": "laion/clap-htsat-unfused",
"audio_transcript_embedding_provider": "transformer",
"audio_transcript_embedding_model": "intfloat/multilingual-e5-small",
"whisper_language": "en",
"whisper_beam_size": 5,
"whisper_vad_filter": false,
"whisper_vad_threshold": 0.5,
"whisper_word_timestamps": false,
"whisper_device": "cpu",
"whisper_compute_type": "int8",
"audio_target_sr": 48000,
"audio_whisper_sr": 16000,
"silero_min_silence_ms": 250,
"silero_speech_pad_ms": 150,
"silero_threshold": 0.4,
"silero_window_samples": 512,
"audio_min_chunk_seconds": 1.2,
"audio_max_chunk_seconds": 20.0,
"audio_merge_gap_ms": 300,
"env_path": "keys.env",
"redis_url": "redis://localhost:6381",
"redis_store": "redis_store",
"redis_prefix": "rag",
"app_id": "rag_api1",
"session_id": "defaault1",
"user_id": "local_user1",
"history_turns": 5,
"history_rewrite_turns": 2,
"history_max_turns": 2000,
"history_ttl_seconds": 604800
}
---
- **配置驱动 AgnosticRagRouter** `router_settings.json`(路由、后端、提示、重试、阈值)```json
{
"router_provider": "openai",
"router_model": "gpt-4o-mini",
"router_temperature": 0.0,
"router_prompt": "You are a routing agent. Choose the best RAG backend for the user query.",
"routing_mode": "rules_then_llm",
"fallback_backend": "eyad_asil",
"allow_multi_backend": false,
"confidence_threshold": 0.6,
"llm_call_timeout_seconds": 60.0,
"llm_call_retries": 1,
"backend_call_timeout_seconds": 180.0,
"backend_call_retries": 1,
"env_path": "keys.env",
"transformer_device": "cuda",
"transformer_trust_remote_code": true,
"transformer_local_files_only": false,
"transformer_chat_backend": "",
"transformer_chat_model_path": "",
"transformer_chat_prompt": "{joined}",
"transformer_max_new_tokens": 256,
"transformer_temperature": 0.0,
"transformer_top_p": 0.9,
"transformer_do_sample": false,
"transformer_system_prompt": "",
"transformer_max_input_length": 2048,
"openai_api_key": "",
"gemini_api_key": "",
"backends": [
{
"name": "medical_csv",
"title": "Medical CSV RAG",
"url": "http://localhost:8002",
"query_path": "/query",
"index_path": "/index/build",
"description": "Use for medical CSV questions, claims, claim denial codes, diseases, treatments, medicines, patient/insurance/medical table lookups.",
"source_type": "csv",
"docs_dir": "rag_data/my_csvs/docs",
"source_files": [
"claims_300.csv"
],
"collection_prefix": "medical_csv",
"enabled": true,
"rules": {
"keywords_any": [
"medical",
"https://github.com/ayush-rajvansh/Medical-CSV-RAG",
"url": "http://localhost:8001",
"query_path": "/query",
"index_path": "/index/build",
"description": "Use for questions about Eyad, Asil, family/private TXT knowledge, children info, personal notes in Asil_Eyad.txt.",
"source_type": "txt",
"docs_dir": "rag_data/my_csvs/docs",
"source_files": [
"Asil_Eyad.txt"
],
"collection_prefix": "eyad_asil",
"enabled": true,
"rules": {
"keywords_any": [
"eyad",
"asil",
"إياد",
"اياد",
"أسيل",
"اسيل",
"لجين",
"lujain",
"family",
"child",
"children",
"عائلة",
"طفل",
"أطفال"
]
},
"query_stream_path": "/query_stream"
}
],
"routing_function_schema": "{\n \"function\": \"query_<backend_name>_rag\",\n \"arguments\": {\"query\": \"original user query\"},\n \"backend_name\": \"backend_name\",\n \"confidence\": 0.0,\n \"reason\": \"short reason\"\n}",
"routing_rules_prompt": "- Choose medical_csv for medical CSV claims, denial codes, patient/insurance/medical table questions.\n- Choose eyad_asil for Eyad/Asil/private TXT family information.\n- If uncertain, choose the closest backend with low confidence.\n- Keep the original user query unchanged in arguments.query.",
"routing_prompt_template": "{router_prompt}\n\nYou are routing a user query to exactly one AgnosticRAG backend.\nReturn ONLY valid JSON. Do not use markdown. Do not add explanations outside JSON.\n\nAvailable tools/functions:\n{backend_tools}\n\nAvailable backend descriptions:\n{backend_descriptions}\n\nRequired JSON schema:\n{function_schema}\n\nRules:\n{routing_rules}\n\nUser query:\n{query}\n",
"stream_media_type": "text/event-stream",
"cors_allowed_origins": [
"http://localhost:4200",
"http://127.0.0.1:4200"
],
"cors_allowed_methods": [
"GET",
"POST",
"OPTIONS"
],
"cors_allowed_headers": [
"*"
]
}
```
---
## 🧠 架构概述
```
GUI(Web / Desktop)
↓
AgnosticRagMCP(可选)
├── Telegram
├── WhatsApp
├── MS Teams
├── Google Drive
└── 外部工具/驱动
↓
AgnosticRagRouter(可选)
↓
核心 RAG API(FastAPI)
↓
RAG 引擎
├── LLM 提供商(Transformers,vLLM(Later),Ollama,OpenAI,Gemini,...)
├── 向量存储(Qdrant)
├── 图存储(Neo4j)
└── 数据源(Txt,CSV,图像,音频(语音))
```
- **核心 API**:处理检索、嵌入、GraphRAG、提示构造、历史记录、重排序、缓存和推理。
- **AgnosticRagRouter**:基于智能 LLM 的后端选择和多后端编排。
- **AgnosticRagMCP**:基于 MCP 的外部集成层,用于 Telegram、WhatsApp、MS Teams、Google Drive、企业连接器和外部 AI 工具/驱动。
- **GUI(桌面/网络)**:与核心 API 或路由器通信的薄客户端,用于快速测试和配置生成。
- **LLM 提供商**:动态选择可交换的提供商。
- **Qdrant**:用于密集、稀疏、多模态和多向量检索的混合向量数据库。
- **Neo4j**:用于实体关系、GraphRAG 检索和多跳推理的知识图数据库。
---
## 🚀 核心 RAG API
核心 RAG API 负责:
- 查询理解
- 从 Qdrant 和 Neo4j 检索上下文
- 混合搜索(密集 + BM25)
- GraphRAG 检索和多跳推理
- 提示构造
- LLM 推理
- 对话历史记录管理
- 查询重写和重排序
- 多模态检索(文本、图像、音频)
它可以被使用:
- 直接作为 FastAPI 后端
- 作为提供的 GUI 应用程序的后端
- 作为自定义企业应用程序的基础
- 作为多 RAG 和 GraphRAG 部署的可扩展后端
---
## 🧠 AgnosticRagRouter
`AgnosticRagRouter` 是用于多后端 RAG 系统的智能路由层。
它负责:
- 基于 LLM 的后端选择
- 跨多个 RAG 后端的查询路由
- 多域编排
- 动态后端调度
- 类似 Agent 的路由工作流
- 可配置的路由策略和重试逻辑
示例:
- 文本 RAG 后端
- CSV / 医疗 RAG 后端
- 图像 RAG 后端
- 音频 / 语音 RAG 后端
路由器可以根据用户查询自动选择最相关的后端。
---
## 🔌 AgnosticRagMCP
`AgnosticRagMCP` 是基于 MCP 的外部集成层。
它使外部系统和消息平台能够与 AgnosticRagRouter 和核心 RAG API 通信。
支持/计划中的集成:
- Telegram 机器人
- WhatsApp 机器人
- MS Teams 机器人
- Google Drive 工具
- 企业连接器和驱动程序
- 外部 AI 工具
- MCP 工作流编排
示例流程:
Telegram / WhatsApp / MS Teams 用户
↓
AgnosticRagMCP
↓
AgnosticRagRouter
↓
选定的 RAG 后端
↓
Qdrant 搜索 + Neo4j 图搜索
↓
合并语义 + 图上下文
↓
LLM
↓
回复用户
## 🖥️ 图形用户界面(快速测试)
图形用户界面建立在核心 API 之上,提供:
- 交互式聊天界面
- 历史记录感知的对话
- 轻松切换 RAG 配置
- 运行时配置生成
- 多后端测试支持
图形用户界面**不包含 RAG 逻辑**;它严格使用核心 API,这将帮助管理员和开发人员快速设置部署配置。
---
## 🔌 大型语言模型提供商
### 当前 / 支持
- **Ollama**(本地)
- **Transformer**(本地)
- **OpenAI**(远程)
- **Gemini**(远程)
- **ColPali**(多向量图像检索)(本地)
- **ColQwen**(多向量图像检索)(本地)
- **Whisper**(语音 / 音频转录)(本地)
### 嵌入 / 检索支持
- 稠密嵌入
- BM25 稀疏嵌入
- 混合搜索
- 多向量检索
- CLAP 音频嵌入
- Muvera FDE 加速图像检索
---
## 🔮 即将到来的功能
- **Transformers 提供商和 vLLM 提供商**
- 本地执行
- Hugging Face 模型支持
- Transformers:Windows / Linux,可选 GPU
- vLLM:最适合 Ubuntu / Linux 生产环境
- **PostgreSQL 数据源**
- 将关系数据索引到 **Qdrant**
- 实现结构化数据集上的 RAG
---
## 📦 向量存储
- **Qdrant** 用作主要向量数据库
- **Neo4j** 用作 GraphRAG 的知识图谱数据库
- 支持:
**Qdrant**
- 稠密向量搜索
- 元数据过滤
- 多集合设置
- Qdrant-混合搜索:BM25(稀疏)+ 稠密嵌入
**Neo4j**
- 实体和关系存储
- 图遍历和关系发现
- 多跳检索
- GraphRAG 上下文增强
- 关系感知搜索
---
## 🛠️ 配置
系统通过以下方式配置:
- 环境变量
- 配置文件
- 提供商特定设置
这允许您:
- 切换 LLM 提供商
- 更改聊天、嵌入、翻译和重写模型
- 开关重写提示逻辑
- 选择数据源
---
### 使用 Docker 启动 Qdrant、Redis 和 RedisInsight `docker-compose.yml`
启动所有服务
```bat
docker compose up -d
```
停止所有服务
```bat
docker compose down
```
---
## 🌐 网址
- **Swagger UI**:http://localhost:8000/docs
- **Qdrant 仪表盘**:http://localhost:6333/dashboard
- **Neo4j 浏览器**:http://localhost:7474/browser/
- **RedisInsight**:http://localhost:5540/
---
## ⚙️ 设置 API
```
GET http://localhost:8000/settings
POST http://localhost:8000/settings
```
---
## 📥 索引数据
```
POST http://localhost:8000/index/build
{
}
```
---
## 📡 Qdrant 状态
```
GET http://localhost:8000/ping/qdrant
GET http://localhost:8000/ping/qdrantWithInfo
```
---
## ❓ 查询流 API
```
POST http://localhost:8000/query_stream
{
"query": "谁在这里,父亲?",
"user_id": "local_user88777"
}
```
## ❓ 查询 API
```
POST http://localhost:8000/query
{
"query": "谁在这里,父亲?",
"user_id": "local_user88777"
}
```
---
## GUI 窗口
#### 主窗口:搜索 txt 文件

---
#### 主窗口:搜索 csv 文件表格

---
#### 主窗口:通过文本查询搜索图像

---
#### 主窗口:通过图像查询搜索图像

---
#### 主窗口:通过文本 / 音频文件查询搜索音频(语音)

---
#### 主窗口:使用 AgnosticRagRouter 在 TXT 和 CSV 中搜索

---
#### 结果窗口

---
#### 日志窗口

---
#### 历史记录窗口

---
#### 设置窗口

---
#### 设置窗口

---
#### Qdrant 集合

---
#### Redis 数据

---
#### Swagger

---
#### Telegram

---
## 📄 许可证
MIT 许可证 © 2026 Mohammed & Manaf
https://www.linkedin.com/in/mohammedkadi/
https://www.linkedin.com/in/m-manaf-mahfouz-pmi-cpmai%C2%AE-2614b48/
MCP 配置
以下是此 MCP Server 的配置信息,可直接复制到 Cursor 或其他 MCP 客户端中使用。
mcp.json
连接信息
猜你喜欢
暂无推荐服务器