基于 OpenAI Embedding 与 FAISS 实现的本地知识库问答系统

可用于企业内训资料问答、AI 助手、知识管理等场景。

Posted by ai wu on July 7, 2025

OpenAI-FAISS-Demo

基于 OpenAI Embedding 与 FAISS 实现的本地知识库问答系统。

✨ 项目简介

该项目结合了 OpenAI 向量嵌入与 FAISS 相似度搜索,支持将本地的 PDF、Markdown、TXT 等文档转为向量,构建知识库,实现语义检索与问答。

可用于企业内训资料问答、AI 助手、知识管理等场景。

🔧 功能特点

  • 支持 TXT / PDF / Markdown 批量导入
  • 自动分块处理文本(防止 token 超限)
  • 使用 OpenAI text-embedding-3-small 构建向量
  • 基于 FAISS 实现高效相似度检索
  • 支持控制台与 Streamlit Web UI 查询
  • 支持中文文档与多段上下文拼接

📦 安装与环境准备

环境建议(macOS M1/M2)

  • Python 3.10+
  • pip / virtualenv
  • 推荐使用 pyenv 安装 Python,避免系统冲突

安装依赖

1
2
3
4
5
git clone https://github.com/wuxiumu/OpenAI-FAISS-Demo.git
cd OpenAI-FAISS-Demo
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt

设置 API Key

在项目根目录新建 .env 文件:

1
OPENAI_API_KEY=sk-xxx-your-key

📁 使用方法

1. 添加知识文档

将你的 .pdf.md.txt 文件放入 docs/ 目录。

2. 运行向量构建脚本

1
python ingest.py

将自动构建 FAISS 向量索引,并生成 vector.indexsources.txt

3. 使用控制台查询

1
python main.py

4. 使用 Web UI(推荐)

1
streamlit run app.py

访问:http://localhost:8501

📷 示例界面

🧠 待扩展方向

  • 文档上传即向量化
  • 支持本地 LLM(如 Ollama、GPT4All)
  • 添加多轮问答与记忆机制
  • 支持向量去重与增量构建

📄 License

MIT License. 使用前请遵守 OpenAI API 使用政策。