From zero to a RAG system: successes and failures
2 months ago
- #LLM
- #RAG
- #ChromaDB
- 作者的任务是为工程师创建一个内部RAG系统,要求快速响应并能访问十年间的项目文件,包括OrcaFlex文件。
- 初期挑战包括选择合适的技术栈(使用Ollama作为本地LLM,nomic-embed-text处理嵌入,LlamaIndex进行RAG编排,Python作为开发语言)。
- 文档混乱是主要问题,1TB的混合文件中需过滤非文本类型,最终文件数量减少54%。
- 索引451GB文档时遇到困难,改用ChromaDB后支持批量处理和检查点机制,解决了内存和损坏问题。
- 通过租用配备NVIDIA RTX 4000 SFF Ada的虚拟机突破GPU限制,最终耗时数周完成索引。
- 最终架构采用Flask构建API,Streamlit开发前端,Azure Blob Storage存储文档,ChromaDB管理向量数据。
- 经验总结:通过批量处理管理内存,对问题文件实现容错机制,采用检查点策略并添加监控。
- 当前系统已实现高效可靠,但受资源限制未能整合OrcaFlex等进阶功能。