Home - Tian789Gong/SkyOrange-ChatAI GitHub Wiki
欢迎来到 SkyOrange-ChatAI 的wiki , 在这里开启 Langchain 与大模型的邂逅!
项目简介
📃 SkyOrange-ChatAI
基于 ChatGLM 等大语言模型与 Langchain 等应用框架实现,开源、可离线部署的检索增强生成(RAG)大模型知识库项目。
🤖️ 一种利用 langchain 思想实现的基于本地知识库的问答应用,目标期望建立一套对中文场景与开源模型支持友好、可离线运行的知识库问答解决方案。
✅ 依托于本项目支持的开源 LLM 与 Embedding 模型,本项目可实现全部使用开源模型离线私有部署。与此同时,本项目也支持 OpenAI GPT API 的调用,并将在后续持续扩充对各类模型及模型 API 的接入。
算法流程
⛓️ 本项目实现原理如下图所示,过程包括加载文件 -> 读取文本 -> 文本分割 -> 文本向量化 -> 问句向量化 ->
在文本向量中匹配出与问句向量最相似的 top k
个 -> 匹配出的文本作为上下文和问题一起添加到 prompt
中 -> 提交给 LLM
生成回答。
从文档处理角度来看,实现流程如下:
🚩 本项目未涉及微调、训练过程,但可利用微调或训练对本项目效果进行优化。
技术路线图
- Langchain 应用
- 本地数据接入
- 接入非结构化文档
- .txt, .rtf, .epub, .srt
- .eml, .msg
- .html, .xml, .toml, .mhtml
- .json, .jsonl
- .md, .rst
- .docx, .doc, .pptx, .ppt, .odt
- .enex
- .jpg, .jpeg, .png, .bmp
- .py, .ipynb
- 结构化数据接入
- .csv, .tsv
- .xlsx, .xls, .xlsd
- 接入非结构化文档
- 分词及召回
- 接入不同类型 TextSplitter
- 优化依据中文标点符号设计的 ChineseTextSplitter
- 搜索引擎接入
- Bing 搜索
- DuckDuckGo 搜索
- Metaphor 搜索
- Agent 实现
- 基础React形式的Agent实现,包括调用计算器等
- Langchain 自带的Agent实现和调用
- 智能调用不同的数据库和联网知识
- LLM 模型接入
- 支持调用 FastChat api 调用 llm
- 支持 ChatGLM API 等 LLM API 的接入
- 支持 Langchain 框架支持的LLM API 接入
- Embedding 模型接入
- 支持调用 HuggingFace 中各开源 Embedding 模型
- 支持 OpenAI Embedding API 等 Embedding API 的接入
- 支持 智谱AI, 百度千帆, 千问, MiniMax 等在线 Embedding API 的接入
- 基于 FastAPI 的 API 方式调用
- Web UI
- 基于 Streamlit 的 Web UI
- 本地数据接入