知识库-向量化功能-环境配置

33 阅读4分钟

知识库-向量化功能-环境配置

一、功能概述

本功能支持读取上传的PDF、Word、TXT格式文本文件,通过文本嵌入模型将文本转换为向量数据,并将原始文本与向量数据存储至Elasticsearch(ES)向量数据库,最终实现基于语义的文本相似度检索。

注意:本功能仅处理文本内容,不涉及图片的读取与解析。

二、技术框架

  • 核心框架:SpringBoot 3.4.3
  • AI组件:Spring AI 1.0.0
  • 向量数据库:Elasticsearch 8.11.4
  • 文本嵌入模型:lrs33/bce-embedding-base_v1(适配文本相似度计算、语义搜索场景,输出向量维度为768)

三、环境准备(Windows系统)

3.1 软件下载与安装

软件/服务下载地址/安装方式备注
Ollamaollama.com/用于本地部署文本嵌入模型,下载后直接安装即可
Elasticsearch 8.11.4artifacts.elastic.co/downloads/e…免安装,解压即可使用

3.2 Elasticsearch 配置修改(关闭安全验证,开发环境专用)

解压Elasticsearch后,修改 elasticsearch-8.11.4\config\elasticsearch.yml 配置文件,关闭安全验证(仅用于开发环境,生产环境需开启并配置账号密码):

# 关闭xpack安全验证(核心配置)
xpack.security.enabled: false
xpack.security.enrollment.enabled: false
# 可选:开启跨域(若前端需访问ES)
http.cors.enabled: true
http.cors.allow-origin: "*"

3.3 文本嵌入模型部署

  1. 启动Ollama服务(安装完成后默认自动启动,可通过任务管理器确认);
  2. 打开命令行工具(CMD/PowerShell),执行模型下载命令:
    ollama pull lrs33/bce-embedding-base_v1
    
  3. 验证模型下载结果,执行命令:
    ollama list
    
    若列表中显示 lrs33/bce-embedding-base_v1,则说明模型下载成功。

四、项目配置

4.1 Maven依赖配置

<!-- Spring AI 核心依赖 -->
<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-starter-vector-store-elasticsearch</artifactId>
    <version>1.0.0</version>
</dependency>
<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-advisors-vector-store</artifactId>
    <version>1.0.0</version>
</dependency>
<!-- Ollama 模型依赖 -->
<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-ollama</artifactId>
    <version>1.0.0</version>
</dependency>

4.2 应用配置(application.yml)

spring:
  # AI 相关配置
  ai:
    # Ollama 本地服务配置
    ollama:
      base-url: http://localhost:11434  # Ollama 默认端口11434
      # 文本嵌入模型配置
      embedding:
        model: lrs33/bce-embedding-base_v1  # 与本地下载的模型名一致
        options:
          temperature: 0.0  # 嵌入模型固定为0,避免随机值
          num_ctx: 1024     # 模型上下文窗口大小,适配文本长度

    # Elasticsearch 向量存储配置
    vectorstore:
      elasticsearch:
        index-name: ai_vector_index        # 向量索引名(自动创建)
        vector-field-name: vector          # 向量数据存储字段名
        text-field-name: text              # 原始文本存储字段名
        id-field-name: id                  # 文档唯一标识字段名
        dimension: 768                     # 必须匹配模型输出维度(lrs33/bce-embedding-base_v1为768)
        similarity: cosine                 # 相似度算法(cosine余弦相似度/ l2_norm欧氏距离/ dot_product点积)
        bulk-size: 50                      # ES批量写入批次大小(与代码中BATCH_SIZE保持一致)
        refresh-interval: 300s             # 索引刷新间隔(减少ES磁盘IO压力)

  # Elasticsearch 基础连接配置
  elasticsearch:
    uris: http://localhost:9200            # ES 默认端口9200
    # username: elastic                   # 生产环境开启安全验证时需配置
    # password: 123456                    # 生产环境配置对应密码
    connection-timeout: 300s              # 连接超时时间
    socket-timeout: 600s                  # 读写超时时间
    max-conn-total: 50                    # 最大连接数
    max-conn-per-route: 20                # 单路由最大连接数

4.3 配置说明

配置项关键说明
spring.ai.ollama.embedding.model必须与Ollama本地模型名完全一致,否则模型调用失败
spring.ai.vectorstore.elasticsearch.dimension必须匹配模型输出向量维度(768),否则ES向量检索报错
spring.ai.vectorstore.elasticsearch.similarity推荐使用cosine余弦相似度(文本语义检索最优)
spring.elasticsearch.uris若ES部署在远程服务器,需替换为对应IP+端口

五、验证步骤(可选)

  1. 启动Elasticsearch:执行 elasticsearch-8.11.4\bin\elasticsearch.bat
  2. 验证ES连接:访问 http://localhost:9200,返回JSON格式集群信息则说明启动成功;
  3. 验证Ollama模型:执行 ollama run lrs33/bce-embedding-base_v1,模型正常响应则说明可用;
  4. 启动SpringBoot项目,上传文本文件后,可通过ES客户端(如Kibana)查看 ai_vector_index 索引是否生成数据,验证向量存储功能。

六、注意事项

  1. 开发环境关闭ES安全验证仅为便捷调试,生产环境需开启xpack安全验证并配置强密码;
  2. Ollama服务需保持运行状态,否则模型无法调用;
  3. 若文本文件较大,可适当调整 num_ctx(模型上下文)和 bulk-size(ES批量写入)参数;
  4. ES索引刷新间隔 refresh-interval 可根据业务需求调整,检索实时性要求高可减小数值(如10s),但会增加ES压力。