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