Shire RAG 工作流:在 IDE 中编排 RAG,构建可信的编码智能体
内容提要
构建编码智能体的新RAG工作流,使用Shire语言和自定义的RAG流程智能体编排。通过IDE接口获取代码数据,进行向量化、检索和代码搜索。结合代码校验和执行功能,构建完整、可信的编码智能体。基于Shire的Pattern Action和代码可信校验,实现自动化编程。使用Index和Query实现代码检索与查询。通过Shire自定义代码检索和LLM总结,实现代码示例解释。Shire RAG工作流的实现使用ONNX Runtime、Sentence Transformers和Jaccard相似度算法。支持多种文档类型和IDE语言代码文件。下一步计划提供更多能力,如更多存储方式、结果重排和更多检索方式。
延伸解读
Shire RAG 工作流的核心机制
Shire RAG 工作流通过 Pattern Action 定义数据流,从 IDE 中获取代码数据,并利用 variables 进行向量化、检索和代码搜索。在 afterStreaming 阶段,通过 searching 函数结合上一步结果进行检索,再通过 execute 调用下一个流程(如 summary.shire)进行总结。这种机制将 RAG 流程简化为与 LLM 的两次交互,降低了编排复杂度,但要求对原子能力有较高抽象。
代码可信校验与执行流程
Shire 在 onStreamingDone 阶段提供 parseCode、verifyCode 和 runCode 等后处理函数,用于解析、校验和运行 LLM 生成的代码。例如,生成 Python Hello World 后,依次执行保存、语法校验和运行,确保代码可信。这使编码智能体不仅能生成代码,还能验证和执行,提升自动化编程的可靠性。
技术栈与检索方式
Shire RAG 工作流采用 ONNX Runtime 作为推理框架,Sentence Transformers all-MiniLM-L6-v2 作为 Embedding 模型,默认使用 Jaccard 相似度算法,数据存储默认为内存,未来计划支持 SQLite。此外,还支持基于 NLP 的传统检索方式,如 similarCode 变量使用 Jaccard 算法检索相似代码,similarTestCase 变量使用 TF-IDF 检索相似测试用例。
当前限制与未来方向
当前 Shire RAG 工作流仅能满足简单需求,代码拆分机制尚不完善,存储方式有限。下一步计划支持更多存储方式(如向量数据库)、结果重排(如 LIM、LLM Rerank)以及更多检索方式(如 BM25+、BM42)。这些改进将增强工作流的实用性和灵活性,但现阶段仍是一个 PoC,需谨慎评估其适用场景。
Q&A
Shire RAG 工作流的主要功能是什么?
Shire RAG 工作流主要用于构建可信的编码智能体,支持代码数据的获取、向量化、检索、校验和执行。
如何在 Shire 中实现代码检索?
在 Shire 中,可以通过定义变量和使用 Index 与 Query 函数来实现代码的检索与查询。
Shire RAG 工作流使用了哪些技术?
Shire RAG 工作流主要使用 ONNX Runtime、Sentence Transformers 和 Jaccard 相似度算法等技术。
Shire 的代码校验功能是如何工作的?
Shire 的代码校验在 Streaming 完成后执行,通过 parseCode、verifyCode 和 runCode 函数对生成的代码进行处理和校验。
Shire RAG 工作流支持哪些文档类型?
Shire RAG 工作流支持多种文档类型,包括 Office 文档(如 docx、pptx、xlsx)、PDF 文档和多种 IDE 语言代码文件。
Shire RAG 工作流的未来计划是什么?
未来计划包括支持更多存储方式、结果重排和更多检索方式,以增强工作流的能力。