Solon v3.2.0

rag - 嵌入模型(EmbeddingModel)

</> markdown

嵌入模型,如果是个新人的话理解起来比较晕。其实,它是一个转换工具:输入数据,输出转换后的矢量数据。

和聊天模型一样,也会有方言及适配(这里略过)。

1、嵌入模型的构建

  • 原始构建方式
EmbeddingModel  embeddingModel = EmbeddingModel.of(embedding_apiUrl)
        .apiKey(embedding_apiKey)
        .model(embedding_model)
        .build();
  • 配置器构建方式
solon.ai.embed:
  demo:
    apiUrl: "http://127.0.0.1:11434/api/embed" # 使用完整地址(而不是 api_base)
    provider: "ollama" # 使用 ollama 服务时,需要配置 provider
    model: "bge-m3:latest"
@Configuration
public class DemoConfig {
    @Bean
    public EmbeddingModel embeddingModel(@Inject("${solon.ai.embed.demo}") EmbeddingConfig config) {
        return EmbeddingModel.of(config).build();
    }
}

2、调用及快捷调用

EmbeddingModel 主要是在 RAG 存储与检索时,提供向量转换服务的。

  • 标准调用
EmbeddingResponse resp = embeddingModel
        .input("比较原始的风格", "能表达内在的大概过程", "太阳升起来了")
        .call();

//打印消息
log.warn("{}", resp.getData()); //向量数据
  • 快捷调用
//为一个文本快捷生成矢量数据
float[] data = embeddingModel.embed("比较原始的风格");


//为一批文档快捷生成矢量数据
List<Document> documents = ...;
embeddingModel.embed(documents);

3、方言适配

嵌入模型(EmbeddingModel)同样支持方言适配。