**1. 文档问答:**常见的Langchain用例。在特定文档上回答问题,仅利用这些文档中的信息来构建问答答案(本次验证已实现,俗称打造自己的chatGPT问答库)。
**2. 个人助理:**主要用例之一。个人助理采取行动,记住互动,并了解您的数据。
**3. 查询表格数据:**使用语言模型查询表类型结构化数据(csv,SQL,DataFrame)
**4. 与API交互:**使用语言模型与API交互非常强大。它允许他们访问最新信息,并允许他们采取行动。
**5. 信息提取:**从文本中提取结构化数据。
**6. 文档总结:**压缩较长文档,一种数据增强生成。
Modules: 支持的模型类型和集成。
Prompt:提示词管理、优化和序列化。
Memory:内存是只在链/代理调用之间持续存在的状态。
Indexes:当语言模型与特定于应用程序的数据相结合时,会变得更加强大-此模型包含用于加载、查询、更新外部数据的接口和集成。
Chain:链是结构化的调用序列【对LLM或其他使用程序】
Agents:代理是一个链,其中LLM在给定高级指令和一组工具的情况下,反复决定操作,执行操作并观察结果,直到高级指令完成。
Callbacks:回调允许您记录和流式传输任何链的中间步骤,从而轻松观察、调试、评估应用程序的内部。
ChatGLM3 是智谱AI和清华大学 KEG 实验室联合发布的新一代对话预训练模型。ChatGLM3-6B 是 ChatGLM3 系列中的开源模型,ChatGLM3-6B 引入了如下特性:
更强大的基础模型: ChatGLM3-6B 的基础模型 ChatGLM3-6B-Base
采用了更多样的训练数据、更充分的训练步数和更合理的训练策略。在语义、数学、推理、代码、知识等不同角度的数据集上测评显示,ChatGLM3-6B-Base
具有在 10B 以下的基础模型中最强的性能。
更完整的功能支持: ChatGLM3-6B 采用了全新设计的 Prompt
格式,除正常的多轮对话外。同时原生支持工具调用(Function Call)、代码执行(Code Interpreter)和 Agent
任务等复杂场景。
更全面的开源序列: 除了对话模型 ChatGLM3-6B 外,还开源了基础模型 ChatGLM3-6B-Base、长文本对话模型ChatGLM3-6B-32K。
文档加载器:从许多不同的来源加载文档
文档转换器:分割文档,删除多余的文档等
文本嵌入模型:采取非结构化文本,并把它变成一个浮点数的列表 矢量存储:存储和搜索嵌入式数据
检索器:查询你的数据
如上图,本地知识库搭建的流程如下:
(1-2)准备本地知识库文档目前支持 txt、docx、md、pdf 格式文件;
(3-4)对文本进行分割,将大量文本信息切分为chunks;
(5)选择一种embedding算法,对文本向量化;
(6)将知识库得到的embedding结果保存到数据库,就不用每次应用都进行前面的步骤;
(7)向量相似度计算方式;
(8-9)将问题也用同样的embedding算法,对问题向量化;
(10)从数据库中查找和问题向量最相似的N个文本信息;
(11)得到和问题相关的上下文文本信息;
(12)获取提示模板;
(13)得到输入大模型的prompt比如:问题:,通过以下信息汇总得到答案;
(14)将prompt输入到LLM得到答案;
(15)结果输出。
**总结:**过程包括加载文件 -> 读取文本 -> 文本分割 -> 文本向量化 -> 问句向量化 -> 在文本向量中匹配出与问句向量最相似的 top k个 -> 匹配出的文本作为上下文和问题一起添加到 prompt中 -> 提交给 LLM生成回答。
主要包含以下功能模块与推荐版本
确保Python 3.8 - 3.11。
pytorch 2.01,推荐2.0及以上版本。
CUDA 12.0,驱动525,建议使用11.4及以上版本。
Transformers,推荐版本4.30.2 及以上版本。
faiss-gpu, 推荐版本1.7.2及以上。
langchain,推荐版本0.1.1及以上。
langchain-community,推荐版本0.0.15及以上。
langchain-core,推荐版本0.1.15及以上。
langdetect,推荐版本1.0.9及以上。
langsmith,推荐版本0.0.83及以上。
prompt-toolkit,推荐版本3.0.43及以上。
semantic-version,推荐版本2.10.0及以上。
sentence-transformers,推荐版本2.2.2及以上。
sentencepiece,推荐版本0.1.99及以上。
tiktoken,推荐版本0.5.2及以上。
timm,推荐版本0.9.12及以上。
tokenizers,推荐版本0.15.0及以上。
typing_extensions,推荐版本4.9.0及以上。
unstructured,推荐版本0.11.8及以上。
unstructured-client,推荐版本0.15.2及以上。
unstructured-inference,推荐版本0.7.18及以上。
unstructured.pytesseract,推荐版本0.3.12及以上。
该部分内容体量很大,错误很多,需自行百度与google等方式修改参数、环境与代码等解决。
Split(切割文档)
因为大模型提示词有最大token限制,我们不能把太多的文档内容传给AI,通常是把相关的文档片段传过去就行,所以这里需要对文档切片处理。
Langchain虽然提供了很多文本切割的工具,其中langchain默认使用RecursiveCharacterTextSplitter。
目前已经完全实现Chatglm3+langchain 的整体功能流程与框架,所有流程借助Chatglm+langchain官方文档、百度、google等方式修改参数、环境与代码等实现。
目前已经实现本地文库加载的文件类型:
Chatgml3:11G
Langchain base:1.3G bge-large-zh
图片支持主要是实现图片文字的识别与提取,目前主要流行的方式为OCR模型算法识别
OCR(Optical Character Recognition)是光学字符识别的缩写,是一种把纸质文件中的文字和图形信息转化成计算机可以处理的电子文件的技术。随着人工智能和深度学习技术的发展,OCR技术也得以快速发展和更新。
从原理上讲,OCR技术可以分为两个部分:图像处理和字符识别。图像处理部分对输入的图像进行预处理,包括图像旋转、裁剪、灰度化、二值化、噪声去除等。字符识别部分则是识别处理过后图像中的字符信息,并将识别结果输出。
图片OCR + langchain + chatglm3 框架图如下所示
https://github.com/PaddlePaddle/PaddleOCR.git
https://gitee.com/owenwdx/RapidOCR#rapidocr
英文检测结果
OCR + langchain + chatglm3 框架完全支持视频内容文字识别与问答。
对于图片描述任务,应该尽可能写实,即不需要华丽的语句,只需要陈述图片所展现的事实即可。任务分为两个部分,一是图片编码,二是文本生成,基于此后续的模型也都是encoder-decoder的结构。
中文和英文的语言区别比较大,中文语义更加丰富且灵活多变,而当前针对中文的图像描述生成研究相对较少,大多模型借鉴于英文的IC技术,本次以中文为基础测试研发。
1)检测图像中的目标;
2)目标的属性,比如颜色、尺寸等;
3)目标之间的关联;
4)语言模型,用于把上面的信息表述成句子;
实现ImageCaption需要以下步骤:
Chinese-IC-Baseline 是目前中文图像描述中非常经典的算法框架,Chinese-IC-Baseline 实现了CNN-LSTM-Attention结构,这是图像描述生成方向非常典型的基线模型,因此基于此项目学习基础并展开研究。
Image Caption算法主要包含两部分:一个用于提取图片信息的Visual Model模型,一个用户提取文本信息的Language Mode模型。Visual Model模型可以由CNN、Transformer、GCN等组成,Lanquage Mode模型可以由LSTM、CNN+RNN、Beat、Transformer等组成。
https://github.com/Lieberk/Chinese-IC-Baseline.git
https://blog.csdn.net/lihuanyu520/article/details/131153219
Image Caption 结果
Image Caption 结果
提问回答结果
Chinese-IC-Baseline + langchain + chatglm3 框架完全支持视频内容图文描述与问答。