rag - 嵌入模型(EmbeddingModel)
嵌入模型,如果是个新人的话理解起来比较晕。其实,它是一个转换工具:输入数据,输出转换后的矢量数据。
和聊天模型一样,也会有方言及适配(这里略过)。
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)同样支持方言适配。