diff --git a/docs/architecture/ai-kb-design.md b/docs/architecture/ai-kb-design.md index 3fc8b4f..f003743 100644 --- a/docs/architecture/ai-kb-design.md +++ b/docs/architecture/ai-kb-design.md @@ -78,7 +78,7 @@ func Embed(text string) ([]float32, error) { /* 调用 Embedding 模型 */ } ## 5. 项目代码规划 ``` - internal/rag/ + rag-server/internal/rag/ ├── sync/ # Git 克隆/更新 ├── ingest/ # 文档转换与分块 ├── embed/ # 向量化 diff --git a/docs/rag-system-design.md b/docs/rag-system-design.md index e4104ae..88436c7 100644 --- a/docs/rag-system-design.md +++ b/docs/rag-system-design.md @@ -73,7 +73,7 @@ ## 6. Go 代码模块划分 ``` -internal/rag/ +rag-server/internal/rag/ ├── config/ # 仓库与模型配置 ├── sync/ # GitHub 同步逻辑 ├── ingest/ # Markdown 解析与分块 diff --git a/rag-server/Makefile b/rag-server/Makefile index fcdfa3e..14ff762 100644 --- a/rag-server/Makefile +++ b/rag-server/Makefile @@ -1,5 +1,5 @@ APP_NAME := xcontrol-server -MAIN_FILE := ../cmd/xcontrol-server/main.go +MAIN_FILE := cmd/xcontrol-server/main.go MODULE := xcontrol PORT := 8090 OS := $(shell uname -s) @@ -69,30 +69,30 @@ dev: fi clean: - @echo ">>> 清理构建产物" - rm -f $(APP_NAME) + @echo ">>> 清理构建产物" + rm -f $(APP_NAME) init-db: - @echo ">>> 初始化 RAG schema ($(SCHEMA_FILE))" - @$(PSQL) -f $(SCHEMA_FILE) + @echo ">>> 初始化 RAG schema ($(SCHEMA_FILE))" + @$(PSQL) -f $(SCHEMA_FILE) drop-db: - @echo ">>> 删除 RAG schema 对象" - @$(PSQL) -c "DROP TABLE IF EXISTS public.documents CASCADE;" + @echo ">>> 删除 RAG schema 对象" + @$(PSQL) -c "DROP TABLE IF EXISTS public.documents CASCADE;" reinit-db: drop-db init-db help: - @echo " XControl Server Makefile" - @echo "" - @echo "make build 编译 server 可执行文件" - @echo "make start 后台运行 server (默认端口: $(PORT))" - @echo "make stop 停止运行 server" - @echo "make restart 重启 server" - @echo "make test 运行单元测试" - @echo "make dev 开发模式运行 (自动检测 air,如无则用 go run)" - @echo "make init 初始化依赖(自动选择国内/默认 Go 模块代理,air 可选)" - @echo "make clean 清理构建产物" - @echo "make init-db 初始化数据库 schema ($(SCHEMA_FILE))" - @echo "make drop-db 删除 RAG 相关数据库对象" - @echo "make reinit-db 重置数据库 schema (drop + init)" + @echo " XControl Server Makefile" + @echo "" + @echo "make build 编译 server 可执行文件" + @echo "make start 后台运行 server (默认端口: $(PORT))" + @echo "make stop 停止运行 server" + @echo "make restart 重启 server" + @echo "make test 运行单元测试" + @echo "make dev 开发模式运行 (自动检测 air,如无则用 go run)" + @echo "make init 初始化依赖(自动选择国内/默认 Go 模块代理,air 可选)" + @echo "make clean 清理构建产物" + @echo "make init-db 初始化数据库 schema ($(SCHEMA_FILE))" + @echo "make drop-db 删除 RAG 相关数据库对象" + @echo "make reinit-db 重置数据库 schema (drop + init)" diff --git a/rag-server/api/knowledge.go b/rag-server/api/knowledge.go index 42ed685..9125487 100644 --- a/rag-server/api/knowledge.go +++ b/rag-server/api/knowledge.go @@ -6,7 +6,7 @@ import ( "github.com/gin-gonic/gin" "github.com/jackc/pgx/v5" - rsync "xcontrol/internal/rag/sync" + rsync "xcontrol/rag-server/internal/rag/sync" "xcontrol/rag-server/proxy" ) diff --git a/rag-server/api/rag.go b/rag-server/api/rag.go index 9ca86cd..fe03a2c 100644 --- a/rag-server/api/rag.go +++ b/rag-server/api/rag.go @@ -8,10 +8,10 @@ import ( "github.com/gin-gonic/gin" - "xcontrol/internal/rag" - rconfig "xcontrol/internal/rag/config" - ragembed "xcontrol/internal/rag/embed" - "xcontrol/internal/rag/store" + "xcontrol/rag-server/internal/rag" + rconfig "xcontrol/rag-server/internal/rag/config" + ragembed "xcontrol/rag-server/internal/rag/embed" + "xcontrol/rag-server/internal/rag/store" "xcontrol/rag-server/proxy" ) diff --git a/rag-server/api/rag_test.go b/rag-server/api/rag_test.go index f2a63b0..3dd6df2 100644 --- a/rag-server/api/rag_test.go +++ b/rag-server/api/rag_test.go @@ -11,8 +11,8 @@ import ( "github.com/gin-gonic/gin" - "xcontrol/internal/rag" - "xcontrol/internal/rag/store" + "xcontrol/rag-server/internal/rag" + "xcontrol/rag-server/internal/rag/store" ) type mockRAGService struct { diff --git a/cmd/ingest/main.go b/rag-server/cmd/ingest/main.go similarity index 93% rename from cmd/ingest/main.go rename to rag-server/cmd/ingest/main.go index 52a19a2..978ee91 100644 --- a/cmd/ingest/main.go +++ b/rag-server/cmd/ingest/main.go @@ -6,8 +6,8 @@ import ( "log" "runtime" - cfgpkg "xcontrol/internal/rag/config" - "xcontrol/internal/rag/ingest" + cfgpkg "xcontrol/rag-server/internal/rag/config" + "xcontrol/rag-server/internal/rag/ingest" "xcontrol/rag-server/proxy" ) diff --git a/rag-server/cmd/rag-server-cli/main.go b/rag-server/cmd/rag-server-cli/main.go index 9728213..fff863d 100644 --- a/rag-server/cmd/rag-server-cli/main.go +++ b/rag-server/cmd/rag-server-cli/main.go @@ -15,11 +15,11 @@ import ( "github.com/spf13/cobra" - rconfig "xcontrol/internal/rag/config" - "xcontrol/internal/rag/embed" - "xcontrol/internal/rag/ingest" - "xcontrol/internal/rag/store" - rsync "xcontrol/internal/rag/sync" + rconfig "xcontrol/rag-server/internal/rag/config" + "xcontrol/rag-server/internal/rag/embed" + "xcontrol/rag-server/internal/rag/ingest" + "xcontrol/rag-server/internal/rag/store" + rsync "xcontrol/rag-server/internal/rag/sync" "xcontrol/rag-server/proxy" ) diff --git a/cmd/xcontrol-server/main.go b/rag-server/cmd/xcontrol-server/main.go similarity index 98% rename from cmd/xcontrol-server/main.go rename to rag-server/cmd/xcontrol-server/main.go index 6498122..5569746 100644 --- a/cmd/xcontrol-server/main.go +++ b/rag-server/cmd/xcontrol-server/main.go @@ -15,10 +15,10 @@ import ( "gorm.io/driver/postgres" "gorm.io/gorm" - rconfig "xcontrol/internal/rag/config" "xcontrol/rag-server" "xcontrol/rag-server/api" "xcontrol/rag-server/config" + rconfig "xcontrol/rag-server/internal/rag/config" "xcontrol/rag-server/proxy" ) diff --git a/internal/rag/Dockerfile b/rag-server/internal/rag/Dockerfile similarity index 90% rename from internal/rag/Dockerfile rename to rag-server/internal/rag/Dockerfile index c3a7126..280d9f6 100644 --- a/internal/rag/Dockerfile +++ b/rag-server/internal/rag/Dockerfile @@ -4,7 +4,7 @@ WORKDIR /src COPY go.mod go.sum ./ RUN go mod download COPY . . -RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o /xcontrol ./cmd/xcontrol-server +RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o /xcontrol ./rag-server/cmd/xcontrol-server FROM gcr.io/distroless/base-debian12 WORKDIR / diff --git a/internal/rag/config/config.go b/rag-server/internal/rag/config/config.go similarity index 100% rename from internal/rag/config/config.go rename to rag-server/internal/rag/config/config.go diff --git a/internal/rag/config/repos.yaml b/rag-server/internal/rag/config/repos.yaml similarity index 100% rename from internal/rag/config/repos.yaml rename to rag-server/internal/rag/config/repos.yaml diff --git a/internal/rag/config/runtime.go b/rag-server/internal/rag/config/runtime.go similarity index 100% rename from internal/rag/config/runtime.go rename to rag-server/internal/rag/config/runtime.go diff --git a/internal/rag/config/runtime_test.go b/rag-server/internal/rag/config/runtime_test.go similarity index 100% rename from internal/rag/config/runtime_test.go rename to rag-server/internal/rag/config/runtime_test.go diff --git a/internal/rag/embed/bge.go b/rag-server/internal/rag/embed/bge.go similarity index 100% rename from internal/rag/embed/bge.go rename to rag-server/internal/rag/embed/bge.go diff --git a/internal/rag/embed/bge_test.go b/rag-server/internal/rag/embed/bge_test.go similarity index 100% rename from internal/rag/embed/bge_test.go rename to rag-server/internal/rag/embed/bge_test.go diff --git a/internal/rag/embed/chutes.go b/rag-server/internal/rag/embed/chutes.go similarity index 100% rename from internal/rag/embed/chutes.go rename to rag-server/internal/rag/embed/chutes.go diff --git a/internal/rag/embed/chutes_test.go b/rag-server/internal/rag/embed/chutes_test.go similarity index 100% rename from internal/rag/embed/chutes_test.go rename to rag-server/internal/rag/embed/chutes_test.go diff --git a/internal/rag/embed/embed.go b/rag-server/internal/rag/embed/embed.go similarity index 100% rename from internal/rag/embed/embed.go rename to rag-server/internal/rag/embed/embed.go diff --git a/internal/rag/embed/errors.go b/rag-server/internal/rag/embed/errors.go similarity index 100% rename from internal/rag/embed/errors.go rename to rag-server/internal/rag/embed/errors.go diff --git a/internal/rag/embed/http.go b/rag-server/internal/rag/embed/http.go similarity index 100% rename from internal/rag/embed/http.go rename to rag-server/internal/rag/embed/http.go diff --git a/internal/rag/embed/ollama.go b/rag-server/internal/rag/embed/ollama.go similarity index 100% rename from internal/rag/embed/ollama.go rename to rag-server/internal/rag/embed/ollama.go diff --git a/internal/rag/embed/openai.go b/rag-server/internal/rag/embed/openai.go similarity index 100% rename from internal/rag/embed/openai.go rename to rag-server/internal/rag/embed/openai.go diff --git a/internal/rag/ingest/chunk.go b/rag-server/internal/rag/ingest/chunk.go similarity index 98% rename from internal/rag/ingest/chunk.go rename to rag-server/internal/rag/ingest/chunk.go index d9771f5..9614545 100644 --- a/internal/rag/ingest/chunk.go +++ b/rag-server/internal/rag/ingest/chunk.go @@ -4,7 +4,7 @@ import ( "sort" "strings" - cfgpkg "xcontrol/internal/rag/config" + cfgpkg "xcontrol/rag-server/internal/rag/config" ) // Chunk represents a piece of text prepared for embedding. diff --git a/internal/rag/ingest/chunk_test.go b/rag-server/internal/rag/ingest/chunk_test.go similarity index 98% rename from internal/rag/ingest/chunk_test.go rename to rag-server/internal/rag/ingest/chunk_test.go index 05de44a..8669301 100644 --- a/internal/rag/ingest/chunk_test.go +++ b/rag-server/internal/rag/ingest/chunk_test.go @@ -4,7 +4,7 @@ import ( "strings" "testing" - cfgpkg "xcontrol/internal/rag/config" + cfgpkg "xcontrol/rag-server/internal/rag/config" ) func TestBuildChunksHeading(t *testing.T) { diff --git a/internal/rag/ingest/hash.go b/rag-server/internal/rag/ingest/hash.go similarity index 100% rename from internal/rag/ingest/hash.go rename to rag-server/internal/rag/ingest/hash.go diff --git a/internal/rag/ingest/hash_test.go b/rag-server/internal/rag/ingest/hash_test.go similarity index 100% rename from internal/rag/ingest/hash_test.go rename to rag-server/internal/rag/ingest/hash_test.go diff --git a/internal/rag/ingest/ingest.go b/rag-server/internal/rag/ingest/ingest.go similarity index 94% rename from internal/rag/ingest/ingest.go rename to rag-server/internal/rag/ingest/ingest.go index 633f0f0..791b970 100644 --- a/internal/rag/ingest/ingest.go +++ b/rag-server/internal/rag/ingest/ingest.go @@ -8,10 +8,10 @@ import ( "github.com/jackc/pgx/v5" - cfgpkg "xcontrol/internal/rag/config" - "xcontrol/internal/rag/embed" - "xcontrol/internal/rag/store" - rsync "xcontrol/internal/rag/sync" + cfgpkg "xcontrol/rag-server/internal/rag/config" + "xcontrol/rag-server/internal/rag/embed" + "xcontrol/rag-server/internal/rag/store" + rsync "xcontrol/rag-server/internal/rag/sync" "xcontrol/rag-server/proxy" ) diff --git a/internal/rag/ingest/markdown.go b/rag-server/internal/rag/ingest/markdown.go similarity index 100% rename from internal/rag/ingest/markdown.go rename to rag-server/internal/rag/ingest/markdown.go diff --git a/internal/rag/ingest/walk.go b/rag-server/internal/rag/ingest/walk.go similarity index 100% rename from internal/rag/ingest/walk.go rename to rag-server/internal/rag/ingest/walk.go diff --git a/internal/rag/rag.go b/rag-server/internal/rag/rag.go similarity index 100% rename from internal/rag/rag.go rename to rag-server/internal/rag/rag.go diff --git a/internal/rag/rerank/bge.go b/rag-server/internal/rag/rerank/bge.go similarity index 100% rename from internal/rag/rerank/bge.go rename to rag-server/internal/rag/rerank/bge.go diff --git a/internal/rag/rerank/rerank.go b/rag-server/internal/rag/rerank/rerank.go similarity index 100% rename from internal/rag/rerank/rerank.go rename to rag-server/internal/rag/rerank/rerank.go diff --git a/internal/rag/service.go b/rag-server/internal/rag/service.go similarity index 96% rename from internal/rag/service.go rename to rag-server/internal/rag/service.go index 695e4d9..789e249 100644 --- a/internal/rag/service.go +++ b/rag-server/internal/rag/service.go @@ -9,10 +9,10 @@ import ( "github.com/jackc/pgx/v5" pgvector "github.com/pgvector/pgvector-go" - "xcontrol/internal/rag/config" - "xcontrol/internal/rag/embed" - "xcontrol/internal/rag/rerank" - "xcontrol/internal/rag/store" + "xcontrol/rag-server/internal/rag/config" + "xcontrol/rag-server/internal/rag/embed" + "xcontrol/rag-server/internal/rag/rerank" + "xcontrol/rag-server/internal/rag/store" ) type Service struct { diff --git a/internal/rag/store/store.go b/rag-server/internal/rag/store/store.go similarity index 100% rename from internal/rag/store/store.go rename to rag-server/internal/rag/store/store.go diff --git a/internal/rag/sync/sync.go b/rag-server/internal/rag/sync/sync.go similarity index 100% rename from internal/rag/sync/sync.go rename to rag-server/internal/rag/sync/sync.go