巨坑Spring ai 之spring-ai-starter-vector-store-elasticsearch

在使用spring ai 想构建一个rag demo被坑到想哭

软件版本

xml 复制代码
   <spring-ai-bom.version>1.0.2</spring-ai-bom.version>
    <dependency>
                <groupId>org.springframework.ai</groupId>
                <artifactId>spring-ai-bom</artifactId>
                <version>${spring-ai-bom.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
 <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-starter-vector-store-elasticsearch</artifactId>
        <exclusions>
java 复制代码
   /**
     * 1. ETL文档入库
     * 将pdf写入到向量库中
     *
     * @return
     */
    @GetMapping("/addDocumentToVectorDB")
    public List<Document> addDocumentToVectorDB() {
        TikaDocumentReader tikaDocumentReader = new TikaDocumentReader(resource);
        // 将文件中的文本分割为多组Document
        List<Document> fileDocuments = tikaDocumentReader.get();
        // 基于Token将多组Document进行更细化的分割
        List<Document> documents = tokenTransformer.apply(fileDocuments);
        // 存储到向量数据库中
        vectorStore.accept(documents);
        return documents;
    }

选择embedding模型

yml 复制代码
spring: 
  ai:
    openai:
      embedding:
        options:
#           向量模型
          model: doubao-embedding-large-text-250515

如果模型选择doubao-embedding-text-240715,它默认维度是2560和elasticsearch集成,elasticsearch最大就是2048,又集成不了,恶心

在addDocumentToVectorDB中vectorStore.accept(documents)调用的实现类为ElasticsearchVectorStore

具体代码为

java 复制代码
List<float[]> embeddings = this.embeddingModel.embed(documents, EmbeddingOptionsBuilder.builder().build(), this.batchingStrategy);

EmbeddingOptionsBuilder.builder().build()这部分代码没有使用到配置文件中的对模型维度的声明

进入这个方法中this.embeddingModel.embed(),就会发现都为空,然后就会使用模型默认的维度,太恶心了,所以只能使用维度为2048的模型,这里spring ai 设置完全没有用,完全在搞笑

相关推荐
满怀冰雪13 小时前
19-图像数据处理:PaddleVision Transform 实战
人工智能·深度学习·计算机视觉·paddle
IT_陈寒13 小时前
Vue的响应式让我原地破防,原来问题出在这
前端·人工智能·后端
带娃的IT创业者14 小时前
Kimi-K3 开源背后:2.8 万亿参数的“暴力美学”与智能体的新拐点
人工智能·开源·大模型·智能体·开源模型·kimi-k3·moonshot ai
m0_3807438714 小时前
实战看出 LLM API 的隐性消耗
人工智能
安逸Ai14 小时前
Claude Code、Cursor、Copilot 这类工具通常如何理解项目上下文?
人工智能
烟雨江南78514 小时前
2026汽车制造与新能源整车柔性产线Agentic-Workflow白皮书:跨APS_MES_ERP多智能体动态排产与装配容错实战
大数据·网络·人工智能·自动化·ai客服·企业agent
BUG指挥官15 小时前
Sa-Token和Spring Security对比
java·后端·spring
星栈15 小时前
AI 时代,人和 AI 的关系,我的一点思考
人工智能
鲜于言悠90515 小时前
Claude Code重大更新:多会话可互相通信,告别手动复制上下文
人工智能
甲维斯15 小时前
给Claude Code配上DeepSeek,调用kimicu控制电脑
人工智能·agent