这道题其实问的是,怎么把一张静态截图转化成可交互的知识。说白了,用户给你一张图,你得能认出图上有什么组件,然后从知识库里找到每个组件是干什么的,最后用自然语言讲给用户听。整个流程我分成三步:先解析截图,再检索知识,最后生成回答。我重点讲一下每一步怎么落地。
先说图像理解。我会用[[多模态]]大模型,比如Qwen-VL或者GPT-4V,直接对截图做视觉编码,提取每个组件的边界框、类型和[[OCR]]文字。但这里有个选择:如果业务场景是通用界面,用大模型一步到位就行;如果是固定产品线,比如我们自己的SaaS后台,我会用专门的UI检测模型,像ScreenAI或者CogAgent,因为它们针对常见控件做了优化,速度快、精度高。输出是一个结构化的JSON,比如{type: "button", text: "立即购买", bbox: [x,y,w,h]}。这一步的关键是把非结构化的图像变成机器可读的结构化数据,为检索打基础。
接下来是检索。这里我设计了双路索引:一路是视觉索引,把每个组件的截图patch用[[CLIP]]或者自有模型转成多模态[[Embedding]];另一路是语义索引,把组件的OCR文本和类型用文本embedding表示。检索时,如果用户框选了某个组件,我就用多模态向量去召回最相关的产品文档或设计规范。但实际落地,我不会只用向量搜索,而是结合关键词和向量做[[Hybrid Search]],因为用户问题里可能直接提到组件上的文字,比如“立即购买”,这时候[[BM25]]召回比向量更准。所以我会先粗筛组件类型,再精排功能说明,确保召回率。
生成增强这一步,我把组件的结构化信息、检索到的文档片段和用户问题拼成一个prompt,让大模型生成回答。这里有个坑:大模型容易[[Hallucination]],所以我要求模型在输出时标注信息来源,比如“根据《XX平台设计规范》第3.2节”。这样用户能溯源,也方便调试。
最后说落地风险和前提。整个方案能跑通的前提是,你有一个维护良好的知识库,至少包含三层:组件到功能的映射表、设计规范文档、历史FAQ。如果知识库质量差,比如文档过时或者组件映射不全,那检索出来的东西就是错的,生成再好也没用。常见失败场景是,用户截了一张新版本界面,但知识库还是旧版,结果组件识别对了,检索到的功能说明却是错的。所以上线前我会特别关注知识库的更新机制,比如每次发版后自动同步文档。
延迟也是个大问题。组件预计算embedding,检索走[[ANN]],比如用[[Faiss]]的[[HNSW]]索引,这样检索能在毫秒级完成。大模型只负责最终生成,而且我会用流式输出,让用户不用等太久。
另外,如果组件特别多,比如一个界面有上百个元素,我会考虑用[[GraphRAG]]来建模组件之间的层次关系,比如一个“表单”包含多个“输入框”,这样检索时能利用结构信息提升精度。
所以整体上,我会把[[RAG]]看成一种连接视觉和语义的桥梁,核心是把截图结构化,再通过混合检索找到精准的知识,最后用生成模型包装成回答。我倾向在工程上多做预计算和索引优化,而不是让大模型做所有事情,这样既快又可控。