SomeOranges/BLDE-Agent: A local RAG agent for bioinformatics literature data extraction and tracing.针对看文献找数据库和研究如何使用数据库开发。
它能干什么?
自动化提取:上传 PDF,自动提取 TCGA、GEO 等数据库存取号。
多文献重合分析:自动横向对比多篇文献的底层数据源。
回答数据库问题:精准回答“这篇文献是怎么使用XX数据库的?”。
3. 核心技术栈与架构设计
前端交互:
Streamlit(蓝色主题)。大脑与引擎:
SiliconFlow+DeepSeek+EXA。记忆中枢:
ChromaDB(本地向量数据库) +BGE-M3(文本嵌入模型)。
一:对抗大模型幻觉与“死链”危机
具体困难:在提取生信文献的数据库资产时,大模型(LLM)极易产生“幻觉”,经常凭空捏造出看似合理但根本打不开的官方链接,导致数据源溯源断裂。
解决方案:引入EXA 神经搜索作为真实世界的探针。
底层原理:剥夺大模型直接输出链接的权力,将任务解耦。只让大模型负责“精准提取数据库名称(如 TCGA, MSigDB)”,随后将名称交给 EXA 在互联网上进行实时搜索验证,最终把真实有效的 URL 返回给前端。这套逻辑叫做“大模型主导规划,外部工具执行验证 (Tool Use / Agentic Workflow)”。
二:OOM 惨案
具体困难:在测试本地 PDF 文本切块(Chunking)功能时,
rag_engine.py触发死循环,瞬间吞噬了 22.8GB 的物理内存,导致抛出MemoryError,甚至连 Windows 桌面的资源管理器 (explorer.exe) 都因内存被彻底榨干而崩溃黑屏。解决方案:重写
chunk_text函数,放弃不够稳健的“寻找标点符号回退指针”逻辑,引入物理级别的强制步进机制:step = max(1, chunk_size - chunk_overlap)。底层原理:滑动窗口(Sliding Window)算法在处理长文本时,如果
start指针发生倒退或步长为 0,程序就会在一个点上疯狂向列表里append数据。引入纯数学的强制正向步长,从物理法则上保证了while循环必然走向终止,彻底封堵了内存泄漏的漏洞。
三: RAG
解决方案与进化之路:
构建纯本地引擎:放弃把 PDF 直接塞给大模型的低效做法,使用 PyMuPDF 读取文本,用
BGE-M3模型转化为向量,并持久化存入纯本地的ChromaDB,保护未发表科研数据的绝对隐私。打通动态溯源:修复了硬编码的
sample_paper幽灵数据,让前端真实上传的文件名(Metadata)动态入库。打造三层存储防丢架构:面对刷新丢失问题,没有依赖笨重的云数据库,而是设计了
Session State (临时内存)->temp_chat.json (自动草稿箱)->archived_chats.json (永久金库)的三层状态管理。注入多轮记忆:改变了每次只传一句话的简单请求,将整个历史上下文打包发给硅基流动 API,让它拥有了“追问细节”的能力。
底层原理:RAG (检索增强生成) 的核心不仅仅是向量匹配,而是“数据流转工程”。从文档清洗入库、到带条件的精准捞取 (Metadata Filter)、再到前端状态生命周期 (State Machine) 的精确管理,缺一不可。