巨坑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 设置完全没有用,完全在搞笑

相关推荐
CIO_Alliance9 分钟前
AI+iPaaS解决方案深度整合:让跨系统业务流程自动化一步到位
人工智能·ipaas·系统集成·ai+ipaas·企业cio联盟·企业级ai化转型
苏州IT威翰德10 分钟前
算力资产“续命”专家:苏州威翰德科技赋能NVIDIA高端AI芯片芯片级维修
大数据·人工智能
Linux-187413 分钟前
分布式链路追踪系统之二进制安装skywalking
elasticsearch·云原生·skywalking·分布式链路追踪系统·应用程序性能监控
天上路人23 分钟前
A59P双波束语音模块:神经网络降噪在远场拾音中的工程实现分析
人工智能·深度学习·神经网络·ai降噪·ai语音·麦克风·回音消除
冬奇Lab31 分钟前
AI 评测系列(03):LLM-as-Judge——让 LLM 评价 LLM 的正确姿势
人工智能·llm
Miao1213141 分钟前
某海外住宿平台如何在大规模场景下实现指标一致性:Minerva 指标平台实践
大数据·数据库·人工智能
冬奇Lab44 分钟前
每日一个开源项目(第164篇):毕昇(BISHENG)- 面向企业的开源 LLM DevOps 平台
人工智能·开源·agent
声讯电子1 小时前
录音笔AI降噪方案:从录得到到听得清的听觉革命
人工智能·语音识别
小小测试开发2 小时前
Playwright vs Selenium vs Cypress:从浏览器协议到 API 设计的全面对比与实测
人工智能·selenium·测试工具
Ai_easygo2 小时前
AI Agent开发入门——从ReAct到Tool Calling,拆解Agent的底层运行逻辑
前端·人工智能·react.js