env update

This commit is contained in:
Wenjie Zhang 2025-04-28 22:53:13 +08:00
parent 76e1921386
commit c36d504a5c
10 changed files with 4391 additions and 11 deletions

1
.python-version Normal file
View File

@ -0,0 +1 @@
3.11

131
docker-compose.yml Normal file
View File

@ -0,0 +1,131 @@
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

View File

@ -5,11 +5,14 @@ FROM python:3.12
WORKDIR /app
# 复制 requirements.txt 文件这一步如果文件没变Docker 会使用缓存)
COPY ../requirements.txt /app/requirements.txt
# 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 -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
RUN pip install -U gunicorn -i https://pypi.tuna.tsinghua.edu.cn/simple
RUN pip install uv
RUN uv sync
RUN apt-get clean
RUN apt-get update && apt-get install ffmpeg libsm6 libxext6 -y

View File

@ -43,7 +43,7 @@ services:
environment:
- NODE_ENV=development
- VITE_API_URL=http://api:5050 # 添加这行
command: npm run server
command: pnpm run server
graph:
image: neo4j:5.26

View File

@ -6,7 +6,8 @@ WORKDIR /app
COPY ./web/package*.json ./
# 安装依赖
RUN npm install --verbose --force
RUN npm install -g pnpm@latest-10
RUN pnpm install
# RUN npm install --registry http://mirrors.cloud.tencent.com/npm/ --verbose --force
# 复制源代码

33
pyproject.toml Normal file
View File

@ -0,0 +1,33 @@
[project]
name = "yuxi-know"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.11"
dependencies = [
"dashscope>=1.23.2",
"docx2txt>=0.9",
"fastapi>=0.115.12",
"flagembedding>=1.3.4",
"langchain-community>=0.3.22",
"langchain-openai>=0.3.14",
"langgraph>=0.3.34",
"langsmith>=0.3.37",
"llama-index>=0.12.33",
"llama-index-readers-file>=0.4.7",
"neo4j>=5.28.1",
"openai>=1.76.0",
"opencv-python-headless>=4.11.0.86",
"paddleocr>=2.10.0",
"pymilvus>=2.5.8",
"pymupdf>=1.25.5",
"python-dotenv>=1.1.0",
"python-multipart>=0.0.20",
"pyyaml>=6.0.2",
"qianfan>=0.4.12.3",
"rapidocr-onnxruntime>=1.4.4",
"sentencepiece>=0.2.0",
"tavily-python>=0.7.0",
"uvicorn[standard]>=0.34.2",
"zhipuai>=2.1.5.20250421",
]

View File

@ -20,5 +20,5 @@ app.add_middleware(
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=5000, threads=10, workers=10)
uvicorn.run(app, host="0.0.0.0", port=5050, threads=10, workers=10, reload=True)

View File

@ -190,9 +190,6 @@ class Config(SimpleConfig):
else:
logger.warning(f"Unknown config file type {self.filename}")
else:
logger.warning(f"\n\n{'='*70}\n{'Config file not found':^70}\n{'You can custum your config in `' + self.filename + '`':^70}\n{'='*70}\n\n")
def save(self):
logger.info(f"Saving config to {self.filename}")
if self.filename is None:

View File

@ -26,7 +26,7 @@ class GraphDatabase:
# 尝试加载已保存的图数据库信息
if not self.load_graph_info():
logger.info(f"未找到已保存的图数据库信息,将创建新的配置")
logger.debug(f"未找到已保存的图数据库信息,将创建新的配置")
self.start()
@ -516,7 +516,7 @@ class GraphDatabase:
try:
info_file_path = os.path.join(self.work_dir, "graph_info.json")
if not os.path.exists(info_file_path):
logger.warning(f"图数据库信息文件不存在:{info_file_path}")
logger.debug(f"图数据库信息文件不存在:{info_file_path}")
return False
with open(info_file_path, 'r', encoding='utf-8') as f:

4214
web/pnpm-lock.yaml Normal file

File diff suppressed because it is too large Load Diff