多模态AI概述
多模态AI能够同时理解和处理文本、图像、音频、视频等多种类型的数据。这为AI应用开辟了全新的可能性:从图像描述、视觉问答到视频理解、跨模态检索,多模态AI正在成为下一代AI应用的基础能力。
视觉语言模型(VLM)入门
使用 DeepSeek 等视觉语言模型处理图像:
from openai import OpenAI
import base64
client = OpenAI(
api_key="your-api-key",
base_url="https://api.deepseek.com"
)
# 将图片编码为 base64
def encode_image(image_path):
with open(image_path, "rb") as f:
return base64.b64encode(f.read()).decode("utf-8")
# 发送图文消息
response = client.chat.completions.create(
model="deepseek-chat",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "这张图片里有什么?请详细描述"},
{"type": "image_url", "image_url": {
"url": f"data:image/jpeg;base64,{encode_image('photo.jpg')}"
}}
]
}]
)
print(response.choices[0].message.content)多模态 RAG 系统
传统的 RAG 只能处理文本,多模态 RAG 可以检索和引用图片、表格等视觉信息:
from langchain.document_loaders import UnstructuredImageLoader
from langchain.vectorstores import Chroma
# 1. 图片理解与索引
# 先用 VLM 生成图片描述,再与图片一起索引
image_descriptions = []
for img_path in image_paths:
desc = vlm_describe(img_path)
image_descriptions.append({
"image_path": img_path,
"description": desc
})
# 2. 多模态检索
# 用户查询时,同时检索文本和图片
results = vectorstore.similarity_search(query, k=5)
# 3. 多模态生成
# 将检索到的图片和文本一起传给 LLM 生成答案
context = build_multimodal_context(results)
answer = llm.generate(query, context)文档理解与OCR
多模态模型可以理解和提取文档中的文字、表格、图表信息:
def extract_document_info(image_path):
"""从文档图片中提取结构化信息"""
prompt = """请分析这张文档图片,提取以下信息:
1. 文档类型(发票/合同/报告等)
2. 关键字段和值
3. 表格数据(如有)
4. 文档摘要
请以JSON格式输出。"""
response = vlm_analyze(image_path, prompt)
return json.loads(response)
# 使用示例
invoice_data = extract_document_info("invoice.jpg")
print(f"发票金额: {invoice_data['amount']}")
print(f"发票日期: {invoice_data['date']}")多模态 Agent 开发
构建能够理解视觉信息并采取行动的 Agent:
class MultimodalAgent:
def __init__(self):
self.vlm = VLMClient()
self.tools = {
"screenshot": self.take_screenshot,
"analyze_chart": self.analyze_chart,
"compare_images": self.compare_images
}
def take_screenshot(self):
"""截取屏幕"""
import pyautogui
screenshot = pyautogui.screenshot()
return screenshot
def analyze_chart(self, image):
"""分析图表数据"""
prompt = """分析这张图表,提取:
1. 图表类型
2. X轴和Y轴的含义
3. 数据趋势
4. 关键数据点"""
return self.vlm.analyze(image, prompt)
def run(self, task):
"""执行多模态任务"""
if "截图" in task:
img = self.take_screenshot()
return self.analyze_chart(img)
elif "比较" in task:
return self.compare_images(task["images"])性能优化技巧
- 图片压缩:上传前将图片压缩到合理分辨率(如 1024x1024),减少传输时间
- 缓存结果:对相同图片的分析结果进行缓存
- 批量处理:将多张图片的分析请求合并处理
- 异步处理:使用异步 API 调用,避免阻塞
总结
多模态AI正在从「能用」走向「好用」。建议从简单的图片理解开始,逐步构建复杂的多模态应用。未来,多模态能力将成为 AI 应用的标配。