diff --git a/README.md b/README.md
index 2497f6cf..694cf454 100644
--- a/README.md
+++ b/README.md
@@ -27,17 +27,13 @@
## 📋 更新日志
+- **2025.04.27** - 支持 Ollama 等带有 `Content` 标签的消息解析
- **2025.03.30** - 系统中集成智能体(WIP, [PR#96](https://github.com/xerrors/Yuxi-Know/pull/96))
- **2025.02.24** - 新增网页检索以及内容展示,需配置 `TAVILY_API_KEY`,感谢 [littlewwwhite](https://github.com/littlewwwhite)
- **2025.02.23** - SiliconFlow 的 Rerank 和 Embedding model 支持,现默认使用 SiliconFlow
- **2025.02.20** - DeepSeek-R1 支持,需配置 `DEEPSEEK_API_KEY` 或 `SILICONFLOW_API_KEY`
- **2024.10.12** - 后端修改为 [FastAPI](https://github.com/fastapi),添加 [Milvus-Standalone](https://github.com/milvus-io) 独立部署
-
-
-| PC 网页 | 小屏设备 |
-| :-------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------- |
-|  |  |
### 环境配置
@@ -61,12 +57,11 @@ ZHIPUAI_API_KEY= # 如果配置 智谱清言 添加此行,并替换
**开发环境启动**(源代码修改会自动更新):
```bash
-docker compose -f docker/docker-compose.dev.yml --env-file src/.env up --build
+docker compose --env-file src/.env up --build
```
> 添加 `-d` 参数可在后台运行
-
成功启动后,会看到以下容器:
```
@@ -84,51 +79,14 @@ docker compose -f docker/docker-compose.dev.yml --env-file src/.env up --build
### 系统预览
-
-
-问答支持 Deepseek-R1 等推理模型、知识图谱检索、知识库检索、网页检索
-
-
-
-网页检索结果:
-
-
-
-知识图谱检索结果:
-
-
-
-知识库检索结果
-
-
-
-知识库管理:
-
-
-
-
-
-
-
-知识图谱
-
-
-
-可视化配置:
-
-
-
-丰富的模型支持:
-
-
-
+> 待补充
### 服务管理
**关闭服务**:
```bash
-docker compose -f docker/docker-compose.dev.yml --env-file src/.env down
+docker compose --env-file src/.env down
```
**查看日志**:
@@ -143,14 +101,14 @@ docker logs <容器名称> # 例如:docker logs api-dev
本项目支持通过 API 调用的模型,本地模型需使用 vllm、ollama 转成 API 服务后使用。
-| 模型供应商 | 默认模型 | 配置项目 |
-| :--------------------- | :---------------------------------- | :--------------------------------------------- |
-| `siliconflow` (默认) | `Qwen/Qwen2.5-7B-Instruct` (免费) | `SILICONFLOW_API_KEY` |
-| `openai` | `gpt-4o` | `OPENAI_API_KEY` |
-| `deepseek` | `deepseek-chat` | `DEEPSEEK_API_KEY` |
-| `arc`(豆包方舟) | `doubao-1-5-pro-32k-250115` | `ARK_API_KEY` |
-| `zhipu`(智谱清言) | `glm-4-flash` | `ZHIPUAI_API_KEY` |
-| `dashscope`(阿里) | `qwen-max-latest` | `DASHSCOPE_API_KEY` |
+| 模型供应商 | 默认模型 | 配置项目 |
+| :--------------------- | :---------------------------------- | :---------------------- |
+| `siliconflow` (默认) | `Qwen/Qwen2.5-7B-Instruct` (免费) | `SILICONFLOW_API_KEY` |
+| `openai` | `gpt-4o` | `OPENAI_API_KEY` |
+| `deepseek` | `deepseek-chat` | `DEEPSEEK_API_KEY` |
+| `arc`(豆包方舟) | `doubao-1-5-pro-32k-250115` | `ARK_API_KEY` |
+| `zhipu`(智谱清言) | `glm-4-flash` | `ZHIPUAI_API_KEY` |
+| `dashscope`(阿里) | `qwen-max-latest` | `DASHSCOPE_API_KEY` |
#### 添加新模型供应商
@@ -189,7 +147,6 @@ ark:

-
**添加向量模型**
```yaml
@@ -215,20 +172,9 @@ ark:
## 📚 知识库支持
-本项目支持多种格式的知识库文件:
+本项目支持多种格式的知识库文件:PDF、TXT、Markdown、Docx。
-- PDF
-- Txt
-- Markdown
-- Docx
-
-文件上传后,系统会:
-
-1. 将文件转换为纯文本
-2. 使用向量模型将文本转换为向量
-3. 存储到向量数据库中
-
-> 此过程可能需要一定时间,请耐心等待。
+文件上传后,系统会 对文件进行分块、索引、存储到向量数据库(Milvus)中,此过程可能需要一定时间,请耐心等待。
## 🕸️ 知识图谱支持
@@ -249,7 +195,7 @@ ark:
- 默认账户:`neo4j`
- 默认密码:`0123456789`
-可在 `docker/docker-compose.yml` 和 `docker/docker-compose.dev.yml` 中修改配置(注意同时修改 `api.environment` 和 `graph.environment`)。
+可在 `docker-compose.yml` 中修改配置(注意同时修改 `api.environment` 和 `graph.environment`)。
目前项目暂不支持同时查询多个知识图谱。如已有基于 neo4j 的知识图谱,可删除 `docker-compose.yml` 中的 `graph` 配置项,并修改 `api.environment` 中的 `NEO4J_URI` 为您的 neo4j 服务地址。同时,需要确保节点的标签中包含 Entity 标签,才能正常触发索引。
@@ -261,20 +207,6 @@ ark:
-## ❓ 常见问题
-
-### 镜像下载问题
-
-如无法直接下载相关镜像,可参考 [DaoCloud/public-image-mirror](https://github.com/DaoCloud/public-image-mirror?tab=readme-ov-file#%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B),尝试替换前缀:
-
-```bash
-# 以 neo4j 为例,其余类似
-docker pull m.daocloud.io/docker.io/library/neo4j:latest
-
-# 然后重命名镜像
-docker tag m.daocloud.io/docker.io/library/neo4j:latest neo4j:latest
-```
-
## Star History
[](https://star-history.com/#xerrors/Yuxi-Know)
diff --git a/docker-compose.yml b/docker-compose.yml
index 9b620cd4..c81e0c2c 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -23,7 +23,7 @@ services:
- MILVUS_URI=http://milvus:19530
- MODEL_DIR=/models # 优先级高于 .env 中的 MODEL_DIR
- RUNNING_IN_DOCKER=true
- command: uvicorn server.main:app --host 0.0.0.0 --port 5050 --reload
+ command: uv run uvicorn server.main:app --host 0.0.0.0 --port 5050 --reload
web:
build:
@@ -52,8 +52,8 @@ services:
- "7474:7474"
- "7687:7687"
volumes:
- - ./volumes/neo4j/data:/data
- - ./volumes/neo4j/logs:/var/lib/neo4j/logs
+ - ./docker/volumes/neo4j/data:/data
+ - ./docker/volumes/neo4j/logs:/var/lib/neo4j/logs
environment:
- NEO4J_AUTH=neo4j/0123456789
- NEO4J_server_bolt_listen__address=0.0.0.0:7687
@@ -71,7 +71,7 @@ services:
- ETCD_QUOTA_BACKEND_BYTES=4294967296
- ETCD_SNAPSHOT_COUNT=50000
volumes:
- - ./volumes/milvus/etcd:/etcd
+ - ./docker/volumes/milvus/etcd:/etcd
command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd
healthcheck:
test: ["CMD", "etcdctl", "endpoint", "health"]
@@ -88,7 +88,7 @@ services:
MINIO_ACCESS_KEY: minioadmin
MINIO_SECRET_KEY: minioadmin
volumes:
- - ./volumes/milvus/minio:/minio_data
+ - ./docker/volumes/milvus/minio:/minio_data
command: minio server /minio_data
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
@@ -109,8 +109,8 @@ services:
MINIO_ADDRESS: minio:9000
MILVUS_LOG_LEVEL: error # Add this line to reduce log output
volumes:
- - ./volumes/milvus/milvus:/var/lib/milvus
- - ./volumes/milvus/logs:/var/lib/milvus/logs
+ - ./docker/volumes/milvus/milvus:/var/lib/milvus
+ - ./docker/volumes/milvus/logs:/var/lib/milvus/logs
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"]
interval: 30s
diff --git a/docker/api.Dockerfile b/docker/api.Dockerfile
index 080582c8..571a5f81 100644
--- a/docker/api.Dockerfile
+++ b/docker/api.Dockerfile
@@ -4,19 +4,22 @@ FROM python:3.12
# 设置工作目录
WORKDIR /app
+# 安装系统依赖
+RUN apt-get update && apt-get install -y \
+ python3-dev \
+ ffmpeg \
+ libsm6 \
+ libxext6
+
# 复制 requirements.txt 文件(这一步如果文件没变,Docker 会使用缓存)
# COPY../requirements.txt /app/requirements.txt
COPY ../pyproject.toml /app/pyproject.toml
-COPY ../uv.lock /app/uv.lock
COPY ../.python-version /app/.python-version
# 安装依赖(Docker 会缓存这一步,除非 requirements.txt 发生变化)
RUN pip install uv
RUN uv sync
-RUN apt-get clean
-RUN apt-get update && apt-get install ffmpeg libsm6 libxext6 -y
-
# 复制代码到容器中
COPY ../src /app/src
COPY ../server /app/server
diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml
deleted file mode 100644
index a9b5a0c5..00000000
--- a/docker/docker-compose.yml
+++ /dev/null
@@ -1,131 +0,0 @@
-services:
- api:
- build:
- context: ..
- dockerfile: docker/api.Dockerfile
- container_name: api-dev
- working_dir: /app
- volumes:
- - ../server:/app/server
- - ../src:/app/src
- - ../saves_dev:/app/saves
- # - ${MODEL_DIR}:/models # 如果出现 undefined volume MODEL_DIR: invalid compose project,请添加此环境变量或者注释此行
- ports:
- - "5050:5050"
- networks:
- - app-network
- extra_hosts:
- - "host.docker.internal:host-gateway"
- environment:
- - NEO4J_URI=bolt://graph:7687
- - NEO4J_USERNAME=neo4j
- - NEO4J_PASSWORD=0123456789
- - MILVUS_URI=http://milvus:19530
- - MODEL_DIR=/models # 优先级高于 .env 中的 MODEL_DIR
- - RUNNING_IN_DOCKER=true
- command: uvicorn server.main:app --host 0.0.0.0 --port 5050 --reload
-
- web:
- build:
- context: ..
- dockerfile: docker/web.Dockerfile
- target: development
- container_name: web-dev
- volumes:
- - ../web:/app
- - /app/node_modules
- ports:
- - "5173:5173"
- depends_on:
- - api
- networks:
- - app-network
- environment:
- - NODE_ENV=development
- - VITE_API_URL=http://api:5050 # 添加这行
- command: pnpm run server
-
- graph:
- image: neo4j:5.26
- container_name: graph-dev
- ports:
- - "7474:7474"
- - "7687:7687"
- volumes:
- - ./volumes/neo4j/data:/data
- - ./volumes/neo4j/logs:/var/lib/neo4j/logs
- environment:
- - NEO4J_AUTH=neo4j/0123456789
- - NEO4J_server_bolt_listen__address=0.0.0.0:7687
- - NEO4J_server_http_listen__address=0.0.0.0:7474
- - ENTITY_EMBEDDING=true
- networks:
- - app-network
-
- etcd:
- container_name: milvus-etcd-dev
- image: quay.io/coreos/etcd:v3.5.5
- environment:
- - ETCD_AUTO_COMPACTION_MODE=revision
- - ETCD_AUTO_COMPACTION_RETENTION=1000
- - ETCD_QUOTA_BACKEND_BYTES=4294967296
- - ETCD_SNAPSHOT_COUNT=50000
- volumes:
- - ./volumes/milvus/etcd:/etcd
- command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd
- healthcheck:
- test: ["CMD", "etcdctl", "endpoint", "health"]
- interval: 30s
- timeout: 20s
- retries: 3
- networks:
- - app-network
-
- minio:
- container_name: milvus-minio-dev
- image: minio/minio:RELEASE.2023-03-20T20-16-18Z
- environment:
- MINIO_ACCESS_KEY: minioadmin
- MINIO_SECRET_KEY: minioadmin
- volumes:
- - ./volumes/milvus/minio:/minio_data
- command: minio server /minio_data
- healthcheck:
- test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
- interval: 30s
- timeout: 20s
- retries: 3
- networks:
- - app-network
-
- milvus:
- image: milvusdb/milvus:v2.5.6
- container_name: milvus-standalone-dev
- command: ["milvus", "run", "standalone"]
- security_opt:
- - seccomp:unconfined
- environment:
- ETCD_ENDPOINTS: etcd:2379
- MINIO_ADDRESS: minio:9000
- MILVUS_LOG_LEVEL: error # Add this line to reduce log output
- volumes:
- - ./volumes/milvus/milvus:/var/lib/milvus
- - ./volumes/milvus/logs:/var/lib/milvus/logs
- healthcheck:
- test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"]
- interval: 30s
- start_period: 90s
- timeout: 20s
- retries: 3
- ports:
- - "19530:19530"
- - "9091:9091"
- depends_on:
- - "etcd"
- - "minio"
- networks:
- - app-network
-
-networks:
- app-network:
- driver: bridge