鲍勃·贝尔德博斯:一核,两个接口,无重写 笔记

鲍勃·贝尔德博斯:一核,两个接口,无重写

《Ask the Canon》的作者采用“功能核心与薄适配器”(functional core and thin adapters)方法构建该应用:先实现核心功能,再添加接口。核心由单一模块中的若干纯函数构成,包括 embed、load_library、search_passages 和 reflow,这些函数同时被命令行界面和 Web 应用所使用。由于 load_library 函数调用开销较大,作者引入缓存以提升性能,通过缓存装饰器将首次调用转化为字典查找。为避免首位访客承担加载库的开销,作者利用 FastAPI 的 lifespan 机制在首次请求前预热库并将模型载入 RAM。此外,作者采用懒加载(lazy loading)策略,将 sentence-transformers 模型的加载推迟至实际需要时。该应用的设计以函数而非原始数据为中心,无需使用类,且核心函数可轻松复用于新接口。作者强调在构建应用时工程判断的重要性,尤其是在从原型过渡到生产环境的过程中。该应用的架构设计灵活且可扩展,核心功能与接口之间界限清晰。作者计划在未来文章中讨论用于提升应用结果的后期处理技巧。缓存、懒加载和预热机制共同提升了应用的性能与效率。