在 LangChain4j 框架中,不同模型类型针对特定任务设计,核心区别如下:
graph TD
A[大模型接口] --> B[ChatModel]
A --> C[EmbeddingModel]
A --> D[ImageModel]
A --> E[ModerationModel]
A --> F[ScoringModel]
1. ChatModel(对话模型)
-
功能:处理自然语言对话
-
输入:文本消息(支持多轮对话上下文)
-
输出:文本回复
-
典型模型:GPT-4, Claude, LLaMA
-
使用场景 :
javaString answer = chatModel.generate("Java的Stream API有什么优势?"); // 输出:简化集合操作、支持并行处理...
2. EmbeddingModel(嵌入模型)
-
功能:将文本转换为数值向量
-
输入:文本字符串
-
输出:浮点数数组(通常512-1536维)
-
典型模型:text-embedding-ada-002, BERT
-
使用场景 :
javafloat[] vector = embeddingModel.embed("机器学习").content(); // 输出:[0.23, -0.45, 0.87, ...] // 应用:语义搜索/聚类/RAG
3. ImageModel(图像模型)
-
功能:生成或处理图像
-
输入:文本描述或图像二进制
-
输出:图像URL/BASE64/修改后的图像
-
典型模型:DALL·E 3, Stable Diffusion
-
使用场景 :
javaString imageUrl = imageModel.generate( "卡通风格的Java程序员在写代码", ImageModel.Size._1024x1024 ); // 输出:https://oaidalleapiprodscus.blob.core.windows.net/...
4. ModerationModel(审查模型)
-
功能:内容安全检测
-
输入:文本/图像
-
输出:违规类别与置信度
-
典型模型:OpenAI Moderation, Perspective API
-
使用场景 :
javaModerationResult result = moderationModel.moderate("仇恨言论示例"); result.isFlagged(); // true result.categories().getHate(); // 0.98
5. ScoringModel(评分模型)
-
功能:评估文本质量/相关性
-
输入:文本对(问题-答案)
-
输出:分数(0.0-1.0)
-
典型模型:BERTScore, 自定义奖励模型
-
使用场景 :
javadouble score = scoringModel.score( "量子计算原理", "利用量子比特进行并行计算" ); // 输出:0.87(高相关性)
对比总结表
特性 | ChatModel | EmbeddingModel | ImageModel | ModerationModel | ScoringModel |
---|---|---|---|---|---|
核心任务 | 对话生成 | 文本向量化 | 图像生成 | 内容安全审查 | 质量评估 |
输入类型 | 文本 | 文本 | 文本/图像 | 文本/图像 | 文本对 |
输出形式 | 文本 | 浮点数组 | 图像URL | 分类标签 | 分数值 |
是否支持流式 | ✅ | ❌ | ❌ | ❌ | ❌ |
典型企业应用 | 客服机器人 | 语义搜索 | 营销素材生成 | 用户内容过滤 | AI回答质量监控 |
组合使用示例
java
// 1. 生成内容
String article = chatModel.generate("写一篇关于AI的短文");
// 2. 内容安全审查
if (!moderationModel.moderate(article).isFlagged()) {
// 3. 生成配图
String image = imageModel.generate("AI主题插画");
// 4. 创建嵌入向量
float[] embedding = embeddingModel.embed(article).content();
// 5. 存入向量库
embeddingStore.add(embedding, article);
// 6. 质量评估
double score = scoringModel.score(
"关于AI的文章",
article
);
log.info("内容质量评分: {}", score);
}
选型建议
- 对话系统 →
ChatModel
+ModerationModel
- 知识库应用 →
EmbeddingModel
+ChatModel
- 内容创作平台 →
ChatModel
+ImageModel
+ScoringModel
- UGC社区 →
ModerationModel
+ScoringModel
所有模型接口在 LangChain4j 中保持一致的调用模式:
javaModel model = Model.builder() .provider(Provider.OPENAI) // 或LOCAL/ANTHROPIC等 .apiKey("sk-...") .build();