Azure Cognitive Search文本提取后分块、嵌入及相关功能实现问询
Azure Cognitive Search(ACS)相关问题解答
1. 能否获取ACS索引用的原始提取文本?
可以,核心是在索引和技能集阶段提前配置存储提取文本的字段:
- 索引字段配置:定义索引时新增一个字段(如
raw_extracted_text),设置retrievable: true,在技能集里将OCR/文本提取步骤的输出映射到这个字段。索引完成后,可通过文档查询API或批量导出API获取完整的原始提取文本。 - 批量导出方式:使用ACS的批量导出文档功能,导出包含目标字段的所有文档,直接获取原始文本用于后续分块和嵌入。
2. 低算力分块实现方案
分块必须在索引流水线阶段完成,避免查询后处理的高延迟,低算力方案如下:
- 利用ACS内置拆分技能:使用
SplitSkill,可按字符数、句子、段落规则拆分文本,无需自定义代码,算力消耗极低。例如按每1000字符拆分,同时保留完整句子边界。 - 轻量规则分块:如果自定义处理,用简单字符串逻辑(如按换行符分割段落、按句号拆分句子),用Python/Node.js等轻量脚本批量处理导出的原始文本,无需AI模型,仅消耗基础算力。
- 分块后独立索引:将拆分后的每个文本片段作为独立的索引文档,或在索引字段中存储分块列表,提前生成嵌入向量并存入索引,避免后续重复处理。
3. ACS中OCR与语言翻译的实现及最佳实践
OCR功能实现
使用ACS内置的AzureComputerVisionSkill对接Azure计算机视觉服务,自动处理图片、扫描版PDF中的文本:
- 配置示例:
{ "@odata.type": "#Microsoft.Skills.Vision.ComputerVisionSkill", "apiKey": "<你的计算机视觉服务密钥>", "endpoint": "<你的计算机视觉服务端点>", "inputs": [ { "name": "image", "source": "/document/normalized_images/*" } ], "outputs": [ { "name": "text", "targetName": "ocr_extracted_text" } ] }
- 最佳实践:
- 确保输入文件清晰,避免模糊、倾斜的扫描件,可开启
detectOrientation: true自动矫正文本方向。 - 对多页PDF,技能会自动遍历所有页面提取文本,无需额外配置。
- 仅处理包含图片/扫描件的文档,可通过条件技能过滤,减少不必要的OCR调用。
- 确保输入文件清晰,避免模糊、倾斜的扫描件,可开启
语言翻译功能实现
使用ACS内置的TextTranslationSkill对接Azure翻译服务,实现文本翻译:
- 配置示例:
{ "@odata.type": "#Microsoft.Skills.Text.TranslationSkill", "defaultToLanguageCode": "zh-CN", "suggestedFrom": "en", "inputs": [ { "name": "text", "source": "/document/ocr_extracted_text" } ], "outputs": [ { "name": "translatedText", "targetName": "translated_text" } ] }
- 最佳实践:
- 开启自动语言检测(不指定
suggestedFrom),适配多语言输入场景。 - 结合条件技能,仅对非目标语言的文本执行翻译,减少API调用成本。
- 翻译后文本直接映射到索引字段,可同时用于全文搜索和嵌入生成。
- 开启自动语言检测(不指定
混合搜索补充
分块后生成嵌入,可使用ACS预览版的AzureOpenAIEmbeddingSkill,将嵌入向量存入Collection(Edm.Single)类型的索引字段,查询时同时启用全文搜索和向量搜索,实现混合搜索,提升检索精度。
内容的提问来源于stack exchange,提问作者aalimsha
相关产品推荐
相关产品推荐

