修改环境部署方法,部署速度更快
This commit is contained in:
parent
c36d504a5c
commit
0d39e97763
98
README.md
98
README.md
@ -27,17 +27,13 @@
|
||||
|
||||
## 📋 更新日志
|
||||
|
||||
- **2025.04.27** - 支持 Ollama 等带有 `<think>Content</think>` 标签的消息解析
|
||||
- **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=<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:
|
||||
<img src="https://contributors.nn.ci/api?repo=xerrors/Yuxi-Know" alt="贡献者名单">
|
||||
</a>
|
||||
|
||||
## ❓ 常见问题
|
||||
|
||||
### 镜像下载问题
|
||||
|
||||
如无法直接下载相关镜像,可参考 [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)
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
Loading…
Reference in New Issue
Block a user