附录A 各微服务完整 application.yml 配置汇总

附录 A 各微服务完整 application.yml 配置汇总

A.1 使用说明

本附录用于集中查看 KnowHub 各个后端服务的 application.yml 配置。

需要特别注意:本附录给出的是"脱敏推荐版配置"。也就是说,配置结构基于当前真实项目整理,但数据库密码、JWT 密钥、AI API Key 等敏感内容都改成了环境变量占位形式。

不要把真实密码、真实 .env、真实 API Key 写进教材、README 或 Git 仓库。

推荐规则:

text 复制代码
application.yml:只写环境变量占位和安全默认值
.env.example:只写示例值
.env:写本机真实值,但不提交 Git
生产环境:使用服务器环境变量、配置中心或密钥管理系统注入

A.2 Gateway:rag-gateway-service

Gateway 是外部统一入口,负责路由、JWT 鉴权、白名单和用户信息透传。

文件位置:

text 复制代码
rag-gateway-service/src/main/resources/application.yml

脱敏推荐版:

yaml 复制代码
server:
  port: 9000

spring:
  application:
    name: rag-gateway-service
  cloud:
    nacos:
      discovery:
        server-addr: ${NACOS_SERVER_ADDR:127.0.0.1:8848}
    gateway:
      server:
        webflux:
          routes:
            - id: rag-auth-admin-service
              uri: lb://rag-auth-service
              predicates:
                - Path=/admin/users,/admin/users/**
            - id: rag-knowledge-admin-service
              uri: lb://rag-knowledge-service
              predicates:
                - Path=/admin/knowledge-bases,/admin/knowledge-bases/**,/admin/documents,/admin/documents/**,/admin/qa-logs,/admin/qa-logs/**
            - id: rag-task-admin-service
              uri: lb://rag-task-service
              predicates:
                - Path=/admin/index-tasks,/admin/index-tasks/**
            - id: rag-auth-service
              uri: lb://rag-auth-service
              predicates:
                - Path=/auth/**,/auth-internal/**
              filters:
                - RewritePath=/auth-internal/(?<segment>.*), /internal/${segment}
            - id: rag-knowledge-service
              uri: lb://rag-knowledge-service
              predicates:
                - Path=/kb/**,/knowledge-internal/**
              filters:
                - RewritePath=/knowledge-internal/(?<segment>.*), /internal/${segment}
            - id: rag-task-service
              uri: lb://rag-task-service
              predicates:
                - Path=/tasks/**,/task-internal/**
              filters:
                - RewritePath=/task-internal/(?<segment>.*), /internal/${segment}

rag:
  security:
    jwt:
      secret: ${RAG_JWT_SECRET:replace-with-long-random-secret}
      issuer: ${RAG_JWT_ISSUER:rag-platform}
      expire-duration: ${RAG_JWT_EXPIRE_DURATION:2h}
  gateway:
    auth:
      enabled: ${RAG_GATEWAY_AUTH_ENABLED:true}
      whitelist:
        - /auth/register
        - /auth/login
        - /auth-internal/**
        - /knowledge-internal/**
        - /task-internal/**
        - /doc.html
        - /webjars/**
        - /swagger-ui/**
        - /v3/api-docs/**
        - /favicon.ico

检查重点:

text 复制代码
1. Gateway 端口固定为 9000。
2. /auth/** 转发到 auth-service。
3. /kb/** 转发到 knowledge-service。
4. /tasks/** 转发到 task-service。
5. /admin/** 分别转发到对应后端服务。
6. RAG_JWT_SECRET 生产环境必须替换。

A.3 认证服务:rag-auth-service

auth-service 负责注册、登录、JWT 签发、当前用户查询和后台用户管理。

文件位置:

text 复制代码
rag-auth-service/src/main/resources/application.yml

脱敏推荐版:

yaml 复制代码
server:
  port: 9101

spring:
  application:
    name: rag-auth-service

  datasource:
    url: ${RAG_MYSQL_URL:jdbc:mysql://127.0.0.1:3306/rag_demo?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true}
    username: ${RAG_MYSQL_USERNAME:root}
    password: ${RAG_MYSQL_PASSWORD:change-me}
    driver-class-name: com.mysql.cj.jdbc.Driver

  cloud:
    nacos:
      discovery:
        server-addr: ${NACOS_SERVER_ADDR:127.0.0.1:8848}

mybatis-plus:
  configuration:
    map-underscore-to-camel-case: true
  global-config:
    banner: false

logging:
  level:
    com.luo.ragauth: info

knife4j:
  enable: true

rag:
  security:
    jwt:
      secret: ${RAG_JWT_SECRET:replace-with-long-random-secret}
      issuer: ${RAG_JWT_ISSUER:rag-platform}
      expire-duration: ${RAG_JWT_EXPIRE_DURATION:2h}

检查重点:

text 复制代码
1. auth-service 端口为 9101。
2. 数据库连接走 RAG_MYSQL_URL。
3. 数据库密码必须走 RAG_MYSQL_PASSWORD。
4. JWT 配置要和 Gateway 保持一致。
5. 服务要注册到同一个 Nacos。

A.4 知识库服务:rag-knowledge-service

knowledge-service 是 KnowHub 中配置最多的服务,负责知识库、文档、切片、向量检索、RAG 问答、Redis 缓存、Sentinel 限流和 AI 降级。

文件位置:

text 复制代码
rag-knowledge-service/src/main/resources/application.yml

脱敏推荐版:

yaml 复制代码
server:
  port: 9102

spring:
  application:
    name: rag-knowledge-service

  # 排除不需要的 OpenAI 自动配置(仅保留 Chat 和 Embedding),减少启动时间和不必要的 Bean 创建
  # 注意:以下类名基于 Spring AI 1.0.x 版本,升级到更高版本时需确认类名是否变化
  # 如升级后类名变更导致启动失败,可临时删除此行排除,等确认新类名后再恢复
  autoconfigure:
    exclude:
      - org.springframework.ai.model.openai.autoconfigure.OpenAiAudioSpeechAutoConfiguration
      - org.springframework.ai.model.openai.autoconfigure.OpenAiAudioTranscriptionAutoConfiguration
      - org.springframework.ai.model.openai.autoconfigure.OpenAiImageAutoConfiguration
      - org.springframework.ai.model.openai.autoconfigure.OpenAiModerationAutoConfiguration

  servlet:
    multipart:
      max-file-size: 20MB
      max-request-size: 20MB

  datasource:
    url: ${RAG_MYSQL_URL:jdbc:mysql://127.0.0.1:3306/rag_demo?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true}
    username: ${RAG_MYSQL_USERNAME:root}
    password: ${RAG_MYSQL_PASSWORD:change-me}
    driver-class-name: com.mysql.cj.jdbc.Driver

  # knowledge-service 在文档上传成功后通过 RabbitTemplate 向 RabbitMQ 投递索引消息
  # 详见第 9 章和第 22 章。
  rabbitmq:
    host: ${RABBITMQ_HOST:127.0.0.1}
    port: ${RABBITMQ_PORT:5672}
    username: ${RABBITMQ_USERNAME:knowhub}
    password: ${RABBITMQ_PASSWORD:change-me}
    listener:
      simple:
        prefetch: 1
        retry:
          enabled: false

  data:
    redis:
      host: ${RAG_REDIS_HOST:127.0.0.1}
      port: ${RAG_REDIS_PORT:6379}
      password: ${RAG_REDIS_PASSWORD:}
      database: ${RAG_REDIS_DATABASE:0}

  cloud:
    nacos:
      discovery:
        server-addr: ${NACOS_SERVER_ADDR:127.0.0.1:8848}

  ai:
    openai:
      api-key: ${OPENAI_CHAT_API_KEY:replace-with-your-chat-key}
      base-url: ${OPENAI_CHAT_BASE_URL:https://api.example.com}
      chat:
        api-key: ${OPENAI_CHAT_API_KEY:replace-with-your-chat-key}
        base-url: ${OPENAI_CHAT_BASE_URL:https://api.example.com}
        options:
          model: ${OPENAI_CHAT_MODEL:replace-with-chat-model}
          temperature: ${OPENAI_CHAT_TEMPERATURE:0.2}
      embedding:
        api-key: ${OPENAI_EMBEDDING_API_KEY:replace-with-your-embedding-key}
        base-url: ${OPENAI_EMBEDDING_BASE_URL:https://embedding.example.com}
        options:
          model: ${OPENAI_EMBEDDING_MODEL:text-embedding-v4}

mybatis-plus:
  configuration:
    map-underscore-to-camel-case: true
  global-config:
    banner: false

# Feign 用于 knowledge-service 调用 task-service(创建索引任务、查询任务状态、重试任务)
# 不涉及跨知识库的数据查询,仅用于任务管理相关的 RPC 调用
feign:
  client:
    config:
      default:
        connect-timeout: 3000
        read-timeout: 5000

logging:
  level:
    com.luo.ragknowledge: info

knife4j:
  enable: true

rag:
  # rag.mq 配置必须和 task-service 中的同名配置一致。
  # 如果 exchange/queue/routing-key 不一致,索引任务将永远处于 WAITING 状态。
  mq:
    index-exchange: ${RAG_MQ_INDEX_EXCHANGE:rag.index.exchange}
    index-queue: ${RAG_MQ_INDEX_QUEUE:rag.index.queue}
    index-routing-key: ${RAG_MQ_INDEX_ROUTING_KEY:rag.index.document}
  storage:
    local-dir: ${RAG_STORAGE_LOCAL_DIR:D:/rag/rag-platform/uploads}
    max-file-size: ${RAG_STORAGE_MAX_FILE_SIZE:20MB}
  chunking:
    max-length: ${RAG_CHUNKING_MAX_LENGTH:800}
    overlap-length: ${RAG_CHUNKING_OVERLAP_LENGTH:120}
  vector:
    enabled: ${RAG_VECTOR_ENABLED:true}
    url: ${RAG_VECTOR_URL:jdbc:postgresql://127.0.0.1:5432/rag_vector}
    username: ${RAG_VECTOR_USERNAME:postgres}
    password: ${RAG_VECTOR_PASSWORD:change-me}
    driver-class-name: org.postgresql.Driver
    dimension: ${RAG_VECTOR_DIMENSION:1024}
    top-k: ${RAG_VECTOR_TOP_K:5}
    similarity-threshold: ${RAG_VECTOR_SIMILARITY_THRESHOLD:0.30}
  task:
    lock:
      enabled: ${RAG_INDEX_TASK_LOCK_ENABLED:false}
      key-prefix: ${RAG_INDEX_TASK_LOCK_KEY_PREFIX:rag:index-task:lock:}
      ttl: ${RAG_INDEX_TASK_LOCK_TTL:30m}
    status-cache:
      enabled: ${RAG_DOCUMENT_INDEX_TASK_CACHE_ENABLED:true}
      key-prefix: ${RAG_DOCUMENT_INDEX_TASK_CACHE_KEY_PREFIX:rag:document:index-task:}
      ttl: ${RAG_DOCUMENT_INDEX_TASK_CACHE_TTL:1m}
  ai:
    chat:
      fallback:
        enabled: ${RAG_AI_CHAT_FALLBACK_ENABLED:true}
        timeout: ${RAG_AI_CHAT_FALLBACK_TIMEOUT:5s}
        answer: ${RAG_AI_CHAT_FALLBACK_ANSWER:当前 AI 服务暂时不可用,请稍后重试。}
  sentinel:
    chat-flow:
      enabled: ${RAG_SENTINEL_CHAT_FLOW_ENABLED:true}
      resource: ${RAG_SENTINEL_CHAT_FLOW_RESOURCE:knowledgeChat}
      qps: ${RAG_SENTINEL_CHAT_FLOW_QPS:1}
  kb:
    owner-cache:
      enabled: ${RAG_KB_OWNER_CACHE_ENABLED:true}
      key-prefix: ${RAG_KB_OWNER_CACHE_KEY_PREFIX:rag:kb:owner:}
      ttl: ${RAG_KB_OWNER_CACHE_TTL:30m}

检查重点:

text 复制代码
1. knowledge-service 端口为 9102。
2. MySQL、Redis、Nacos、pgvector、AI 模型都要配置正确。
3. OPENAI_CHAT_API_KEY 和 OPENAI_EMBEDDING_API_KEY 不能硬编码。
4. RAG_VECTOR_DIMENSION 必须和 embedding 模型输出维度一致。
5. top-k 和 similarity-threshold 会影响检索结果。
6. Sentinel QPS 和 AI fallback timeout 会影响问答稳定性。
7. 当前本地存储路径仍通过 RAG_STORAGE_LOCAL_DIR 配置;成书版 MinIO 接入时应继续补 MinIO 客户端配置。

A.5 任务服务:rag-task-service

task-service 负责索引任务状态、重试入口和任务可靠性扫描。

文件位置:

text 复制代码
rag-task-service/src/main/resources/application.yml

脱敏推荐版:

yaml 复制代码
server:
  port: 9103

spring:
  application:
    name: rag-task-service

  datasource:
    url: ${RAG_MYSQL_URL:jdbc:mysql://127.0.0.1:3306/rag_demo?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true}
    username: ${RAG_MYSQL_USERNAME:root}
    password: ${RAG_MYSQL_PASSWORD:change-me}
    driver-class-name: com.mysql.cj.jdbc.Driver

  rabbitmq:
    host: ${RABBITMQ_HOST:127.0.0.1}
    port: ${RABBITMQ_PORT:5672}
    username: ${RABBITMQ_USERNAME:knowhub}
    password: ${RABBITMQ_PASSWORD:change-me}
    listener:
      simple:
        # 每次只取一条消息,处理完再取下一条,避免单个消费者堆积消息。
        prefetch: 1
        # 不做消息层自动重试,由索引任务状态机的 retry 机制统一管理。
        retry:
          enabled: false

  data:
    redis:
      host: ${RAG_REDIS_HOST:127.0.0.1}
      port: ${RAG_REDIS_PORT:6379}
      password: ${RAG_REDIS_PASSWORD:}
      database: ${RAG_REDIS_DATABASE:0}

  cloud:
    nacos:
      discovery:
        server-addr: ${NACOS_SERVER_ADDR:127.0.0.1:8848}

mybatis-plus:
  configuration:
    map-underscore-to-camel-case: true
  global-config:
    banner: false

knife4j:
  enable: true

logging:
  level:
    com.luo.ragtask: info

rag:
  # rag.mq 和 knowledge-service 中的同名配置必须一致,否则生产者投递的消息无法被消费者接收。
  mq:
    index-exchange: ${RAG_MQ_INDEX_EXCHANGE:rag.index.exchange}
    index-queue: ${RAG_MQ_INDEX_QUEUE:rag.index.queue}
    index-routing-key: ${RAG_MQ_INDEX_ROUTING_KEY:rag.index.document}
  task:
    # task-service 消费索引消息时,如开启 Redis 分布式锁,需要连接和 knowledge-service 相同的 Redis。
    lock:
      enabled: ${RAG_INDEX_TASK_LOCK_ENABLED:false}
      key-prefix: ${RAG_INDEX_TASK_LOCK_KEY_PREFIX:rag:index-task:lock:}
      ttl: ${RAG_INDEX_TASK_LOCK_TTL:30m}
    reliability:
      enabled: ${RAG_TASK_RELIABILITY_ENABLED:true}
      timeout-minutes: ${RAG_TASK_RELIABILITY_TIMEOUT_MINUTES:30}
      scan-fixed-delay-ms: ${RAG_TASK_RELIABILITY_SCAN_FIXED_DELAY_MS:60000}
      max-retry-count: ${RAG_TASK_RELIABILITY_MAX_RETRY_COUNT:3}

检查重点:

text 复制代码
1. task-service 端口为 9103。
2. task-service 和 knowledge-service 必须连接同一个 MySQL 业务库。
3. Nacos 地址必须和 Gateway、auth-service、knowledge-service 一致。
4. timeout-minutes、scan-fixed-delay-ms 和 max-retry-count 决定任务超时扫描和重试边界。
5. task-service 和 knowledge-service 的 rag.mq 配置(交换器名、队列名、路由键)必须一致,并且连接同一个 RabbitMQ。

A.6 环境变量速查

下面是后端服务常用环境变量分组。

MySQL

text 复制代码
RAG_MYSQL_URL
RAG_MYSQL_USERNAME
RAG_MYSQL_PASSWORD
MYSQL_ROOT_PASSWORD
MYSQL_DATABASE

PostgreSQL + pgvector

text 复制代码
RAG_VECTOR_ENABLED
RAG_VECTOR_URL
RAG_VECTOR_USERNAME
RAG_VECTOR_PASSWORD
RAG_VECTOR_DIMENSION
RAG_VECTOR_TOP_K
RAG_VECTOR_SIMILARITY_THRESHOLD
POSTGRES_DB
POSTGRES_USER
POSTGRES_PASSWORD

Redis

text 复制代码
RAG_REDIS_HOST
RAG_REDIS_PORT
RAG_REDIS_PASSWORD
RAG_REDIS_DATABASE

RabbitMQ

text 复制代码
RABBITMQ_HOST
RABBITMQ_PORT
RABBITMQ_USERNAME
RABBITMQ_PASSWORD
RAG_MQ_INDEX_EXCHANGE
RAG_MQ_INDEX_QUEUE
RAG_MQ_INDEX_ROUTING_KEY

Nacos

text 复制代码
NACOS_SERVER_ADDR
NACOS_PORT
NACOS_GRPC_PORT
NACOS_RAFT_PORT

JWT

text 复制代码
RAG_JWT_SECRET
RAG_JWT_ISSUER
RAG_JWT_EXPIRE_DURATION
RAG_GATEWAY_AUTH_ENABLED

AI 模型

text 复制代码
OPENAI_CHAT_API_KEY
OPENAI_CHAT_BASE_URL
OPENAI_CHAT_MODEL
OPENAI_CHAT_TEMPERATURE
OPENAI_EMBEDDING_API_KEY
OPENAI_EMBEDDING_BASE_URL
OPENAI_EMBEDDING_MODEL

文件、切片、缓存、限流与降级

text 复制代码
RAG_STORAGE_LOCAL_DIR
RAG_STORAGE_MAX_FILE_SIZE
RAG_CHUNKING_MAX_LENGTH
RAG_CHUNKING_OVERLAP_LENGTH
RAG_KB_OWNER_CACHE_ENABLED
RAG_KB_OWNER_CACHE_KEY_PREFIX
RAG_KB_OWNER_CACHE_TTL
RAG_DOCUMENT_INDEX_TASK_CACHE_ENABLED
RAG_DOCUMENT_INDEX_TASK_CACHE_KEY_PREFIX
RAG_DOCUMENT_INDEX_TASK_CACHE_TTL
RAG_INDEX_TASK_LOCK_ENABLED
RAG_INDEX_TASK_LOCK_KEY_PREFIX
RAG_INDEX_TASK_LOCK_TTL
RAG_SENTINEL_CHAT_FLOW_ENABLED
RAG_SENTINEL_CHAT_FLOW_RESOURCE
RAG_SENTINEL_CHAT_FLOW_QPS
RAG_AI_CHAT_FALLBACK_ENABLED
RAG_AI_CHAT_FALLBACK_TIMEOUT
RAG_AI_CHAT_FALLBACK_ANSWER

任务可靠性

text 复制代码
RAG_TASK_RELIABILITY_ENABLED
RAG_TASK_RELIABILITY_TIMEOUT_MINUTES
RAG_TASK_RELIABILITY_SCAN_FIXED_DELAY_MS
RAG_TASK_RELIABILITY_MAX_RETRY_COUNT

A.6.5 .env.example 完整模板

下面这份内容可以保存为 .env.example。实际部署时,应另存为 .env,并根据本机或服务器环境修改所有密码、Key 和地址。

.env 已在 .gitignore 中排除,不要提交到 Git 仓库。跨机器部署时,优先只修改 .env 中的 IP 地址和密码,不要直接修改各服务的 application.yml

env 复制代码
# ========= MySQL =========
RAG_MYSQL_URL=jdbc:mysql://127.0.0.1:3306/rag_demo?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
RAG_MYSQL_USERNAME=root
RAG_MYSQL_PASSWORD=your-mysql-password
MYSQL_ROOT_PASSWORD=your-root-password

# ========= PostgreSQL/pgvector =========
RAG_VECTOR_ENABLED=true
RAG_VECTOR_URL=jdbc:postgresql://127.0.0.1:5432/rag_vector
RAG_VECTOR_USERNAME=postgres
RAG_VECTOR_PASSWORD=your-pg-password
RAG_VECTOR_DIMENSION=1024
RAG_VECTOR_TOP_K=5
RAG_VECTOR_SIMILARITY_THRESHOLD=0.30

# ========= Redis =========
RAG_REDIS_HOST=127.0.0.1
RAG_REDIS_PORT=6379
RAG_REDIS_PASSWORD=
RAG_REDIS_DATABASE=0

# ========= RabbitMQ =========
RABBITMQ_HOST=127.0.0.1
RABBITMQ_PORT=5672
RABBITMQ_USERNAME=knowhub
RABBITMQ_PASSWORD=your-rabbitmq-password
RAG_MQ_INDEX_EXCHANGE=rag.index.exchange
RAG_MQ_INDEX_QUEUE=rag.index.queue
RAG_MQ_INDEX_ROUTING_KEY=rag.index.document

# ========= Nacos =========
NACOS_SERVER_ADDR=127.0.0.1:8848

# ========= JWT =========
RAG_JWT_SECRET=your-random-secret-at-least-32-characters
RAG_JWT_ISSUER=rag-platform
RAG_JWT_EXPIRE_DURATION=2h
RAG_GATEWAY_AUTH_ENABLED=true

# ========= AI Model =========
OPENAI_CHAT_API_KEY=your-chat-api-key
OPENAI_CHAT_BASE_URL=https://api.openai.com
OPENAI_CHAT_MODEL=gpt-4o
OPENAI_CHAT_TEMPERATURE=0.2
OPENAI_EMBEDDING_API_KEY=your-embedding-api-key
OPENAI_EMBEDDING_BASE_URL=https://api.openai.com
OPENAI_EMBEDDING_MODEL=text-embedding-v4

# ========= Storage & Chunking =========
RAG_STORAGE_LOCAL_DIR=D:/rag/rag-platform/uploads
RAG_STORAGE_MAX_FILE_SIZE=20MB
RAG_CHUNKING_MAX_LENGTH=800
RAG_CHUNKING_OVERLAP_LENGTH=120

# ========= Cache & Lock =========
RAG_KB_OWNER_CACHE_ENABLED=true
RAG_KB_OWNER_CACHE_KEY_PREFIX=rag:kb:owner:
RAG_KB_OWNER_CACHE_TTL=30m
RAG_DOCUMENT_INDEX_TASK_CACHE_ENABLED=true
RAG_DOCUMENT_INDEX_TASK_CACHE_KEY_PREFIX=rag:document:index-task:
RAG_DOCUMENT_INDEX_TASK_CACHE_TTL=1m
RAG_INDEX_TASK_LOCK_ENABLED=false
RAG_INDEX_TASK_LOCK_KEY_PREFIX=rag:index-task:lock:
RAG_INDEX_TASK_LOCK_TTL=30m

# ========= Sentinel & Fallback =========
RAG_SENTINEL_CHAT_FLOW_ENABLED=true
RAG_SENTINEL_CHAT_FLOW_RESOURCE=knowledgeChat
RAG_SENTINEL_CHAT_FLOW_QPS=1
RAG_AI_CHAT_FALLBACK_ENABLED=true
RAG_AI_CHAT_FALLBACK_TIMEOUT=5s
RAG_AI_CHAT_FALLBACK_ANSWER=当前 AI 服务暂时不可用,请稍后重试。

# ========= Task Reliability =========
RAG_TASK_RELIABILITY_ENABLED=true
RAG_TASK_RELIABILITY_TIMEOUT_MINUTES=30
RAG_TASK_RELIABILITY_SCAN_FIXED_DELAY_MS=60000
RAG_TASK_RELIABILITY_MAX_RETRY_COUNT=3

A.7 配置检查清单

部署或演示前,可以按下面顺序检查:

text 复制代码
1. 四个服务是否连接同一个 Nacos。
2. Gateway 和 auth-service 的 JWT secret 是否一致。
3. auth、knowledge、task 是否连接同一个 MySQL。
4. knowledge-service 是否能连接 Redis。
5. knowledge-service 是否能连接 PostgreSQL/pgvector。
6. RAG_VECTOR_DIMENSION 是否等于 embedding 模型输出维度。
6.5 knowledge-service 和 task-service 是否连接同一个 RabbitMQ,rag.mq 下的 exchange、queue、routing-key 是否一致。
7. AI chat 和 embedding 的 base-url、model、api-key 是否正确。
8. 前端请求地址是否指向 Gateway 9000。
9. 真实 .env 是否未提交 Git。
10. application.yml 中是否仍有硬编码密码或真实 API Key。

附录 A 的目标不是解释每个技术点,而是让读者在部署和排查时能快速对照配置。

相关推荐
敲个大西瓜3 小时前
Redis一百道核心面试题
数据库·redis·缓存
1名持续学习的码农4 小时前
GPT Plus、GPT Pro用户第一次用Codex,项目权限和Git分支怎么设置?
人工智能·git·gpt·elasticsearch·ai编程·codex
無a伟6 小时前
Redis持久化详解:RDB与AOF原理、配置、优缺点
数据库
muddjsv7 小时前
SQLite 外键进阶:CASCADE / SET NULL / 级联更新与完整性校验
数据库·sqlite
APItesterCris7 小时前
Open Claw 实战教程:5 分钟搭建京东商品自动化监控与数据分析系统
大数据·运维·数据库·数据仓库·自动化
Nturmoils7 小时前
查库存的 SQL 时灵时不灵,最后发现是 WHERE 里两个函数在打架
数据库
不想纳尼的青春8 小时前
where = 的作用?会影响性能吗?count(*) 和 count()哪个快?
数据库·oracle
Elasticsearch8 小时前
使用 Gemma、Hugging Face 和 Elasticsearch 构建 RAG 系统
elasticsearch
倔强的石头_9 小时前
Spring Boot 接入金仓数据库:配置分层、启动自检与常见错误
数据库