在企业日常运营中,大量知识沉淀在各类文档中——产品手册、技术规范、会议纪要、客户反馈报告等。员工查找一条信息往往需要翻多个文件夹、打开不同格式的文件,耗时费力。本系统提供一种“文档即知识库”的解决方案:用户只需上传常见的办公文档(TXT、PDF、Word、Markdown),系统自动理解文档内容,用户像与人对话一样提问,即可秒级获得基于文档原文的精准答案。
1. 使用 TextLoader、PyPDFLoader、Docx2txtLoader、UnstructuredMarkdownLoader 实现多格式文档加载。 2. 通过 RecursiveCharacterTextSplitter 对长文本进行分割(chunk_size=200~500,overlap=20~50)。 3. 采用本地 HuggingFaceEmbeddings(text2vec-base-chinese)将文本块向量化,存入 Chroma 向量数据库。 4. 用户问题同样向量化后检索最相似的 K 个块(k=3~5),与提示词模板拼接后调用通义千问 API 生成答案。 5. 使用 Streamlit 搭建前端界面,支持文件上传、提问、展示回答。 6. 针对阿里云 Embedding API 参数不兼容问题,改用本地模型;针对 Streamlit 文件锁冲突,采用 UUID 生成唯一向量库目录实现多文档隔离。 7. 通过调整 chunk_size、k 值及提示词优化检索效果,在 6 个问题的测试集上准确率达到 83%。