new AllMiniLmL6V2EmbeddingModel(); 相关方法介绍

java 复制代码
private float[] langchain4jEmbedding(String text) {
        try {
            EmbeddingModel model = new AllMiniLmL6V2EmbeddingModel();
            Response response = model.embed(text);
            return response.content().vector();
        } catch (Exception e) {
            log.error("LangChain4j embedding 失败: {}", e.getMessage());
            return mockEmbedding(text);
        }
    }

整体一句话总结

输入一段文本 text,使用 LangChain4j 内置的 All‑MiniLM‑L6‑v2 本地ONNX模型 ,把文字转换成浮点型向量数组(float\[\]) ;

如果中间出现任何异常,打印错误日志,返回一段模拟的假向量作为降级兜底,不让程序崩溃。

逐行拆解

复制代码
private float[] langchain4jEmbedding(String text) {

私有方法,接收字符串文本,返回浮点向量数组,向量就是文本的数字语义表示(RAG知识库检索用)

复制代码
EmbeddingModel model = new AllMiniLmL6V2EmbeddingModel();
  1. AllMiniLmL6V2EmbeddingModel:LangChain4j自带的本地Embedding模型(all‑MiniLM‑L6‑v2)
  2. ✅不需要调用OpenAI/远程大模型接口,本地运行ONNX,不上传文本到外网>

⚠️注意:第一次new对象时,程序会自动从网络下载onnx模型缓存到本地,断网首次运行会报错。如果你已经手动下载模型文件,可以改成本地加载方式。

复制代码
Response<Embedding> response = model.embed(text);
  • model.embed(text):文本向量化

  • 模型读取文字,分析语义,生成Embedding(嵌入向量)

  • 返回的Response<Embedding>封装了向量+一些元信息

    return response.content().vector();

  • response.content()拿到Embedding对象

  • .vector()取出float[]浮点数组,也就是最终向量>

后续用途:存入Milvus向量库、做相似度比对,实现文档检索(RAG)

复制代码
catch (Exception e) {
    log.error("LangChain4j embedding 失败,降级使用 mock: {}", e.getMessage());
    return mockEmbedding(text);
}

容错降级逻辑

只要向量化抛出异常(常见场景:

首次启动无法下载onnx模型、模型文件损坏、内存不足、文件权限问题等)

  1. 打印error日志记录原因
  2. 调用mockEmbedding(text)返回假的占位向量,避免接口抛出异常中断业务流程

典型适用场景(RAG)

  1. 文档切片后,调用此方法生成向量存入Milvus
  2. 用户提问时,问题文本调用此方法得到向量
  3. 使用向量在Milvus中做相似度检索,找到语义最接近的文档片段
相关推荐
装不满的克莱因瓶1 天前
【SpringAI Alibaba】ReactAgent记忆管理MessageTrimmingHook与MessageDeletionHook
java·人工智能·ai·ai编程·springai·springaialibaba
Flynn Liang5 天前
上线后怎么排查 AI 调用?Spring AI Observability:token/延迟/成本埋点与全链路追踪
java·人工智能·spring·监控·可观测性·observability·springai
Flynn Liang6 天前
AI 应用的安全红线:Spring AI 下的 Prompt 注入防护、PII 脱敏、输出审计与密钥管理
人工智能·安全·spring·数据泄露·springai·prompt注入
Flynn Liang6 天前
Spring AI 上生产:限流熔断、密钥与成本治理、私有化/混合部署、降级与 Prompt 灰度架构全解
人工智能·spring·架构·高可用·springai·成本治理·生产架构
Flynn Liang8 天前
Spring AI 多模态实战(下):文生图 + TTS 语音合成(含 2.0 流式音频分片)
人工智能·spring·文生图·音视频·语音合成·tts·springai
增量星球8 天前
Spring AI 2.0 Tool Calling 到底怎么跑起来的:从 @Tool 到两次模型调用
java·agent·springai·ai coding
Flynn Liang8 天前
让 AI 查订单、查库存、发消息:Spring AI 自定义工具(Tool)实战与工具描述工程
java·人工智能·spring·函数调用·springai·tool·自定义工具
Flynn Liang9 天前
大模型怎么自己调函数?Spring AI 2.0 Tool Calling 自动循环原理 + 完整时序图
java·人工智能·spring·agent·函数调用·springai·toolcalling
Flynn Liang10 天前
RAG 答非所问/幻觉怎么破?Spring AI QuestionAnswerAdvisor 召回优化实战(TopK/重排/混合检索)
人工智能·算法·spring·rag·幻觉·springai
Flynn Liang10 天前
内存/Redis/PGVector/Milvus/ES 怎么选?Spring AI VectorStore 抽象与向量库选型对照表
redis·elasticsearch·milvus·rag·springai·pgvector·向量库