📣1.简介
在结合经典大模型开源框架 LangChain基础上,进一步介绍了如何使用 LangChain 架构结合个人私有数据开发个性化大模型应用。
📣2.文档加载
✨2.1PDF 文档
⛳2.1.1 加载PDF文档
⛳2.1.2 探索加载的数据
✨2.2YouTube音频
⛳2.2.1 加载Youtube音频文档
⛳2.2.2 探索加载的数据
✨2.3网页文档
⛳2.3.1 加载网页文档
⛳2.3.2 探索加载的数据
✨2.4Notion文档
⛳2.4.1 加载Notion Markdown文档
⛳2.4.2 探索加载的数据
📣3.文档分割
✨3.1为什么要进行文档分割
✨3.2文档分割方式
✨3.3基于字符分割
⛳3.3.1 短句分割
⛳3.3.2 长文本分割
✨3.4基于 Token 分割
✨3.5分割Markdown文档
⛳3.5.1 分割一个自定义 Markdown 文档
⛳3.5.2 分割数据库中的 Markdown 文档
📣4.向量数据库与词向量
✨4.1读取文档
✨4.2Embeddings
✨4.3Vectorstores
⛳4.3.1 初始化Chroma
⛳4.3.2 相似性搜索(Similarity Search)
✨4.4失败的情况(Failure modes)
⛳4.4.1 重复块
⛳4.4.2 检索错误答案
📣5.检索
✨5.1向量数据库检索
⛳5.1.1 相似性检索(Similarity Search)
⛳5.1.2 解决多样性:最大边际相关性(MMR)
⛳5.1.3 解决特殊性:使用元数据
⛳5.1.4 解决特殊性:在元数据中使用自查询检索器(LLM辅助检索)
⛳5.1.5 其他技巧:压缩
✨5.2结合各种技术
✨5.3其他类型的检索
📣6.问答
✨6.1加载向量数据库
✨6.2构造检索式问答链
✨6.3深入探究检索式问答链
⛳6.3.1 基于模板的检索式问答链
⛳6.3.2 基于 MapReduce 的检索式问答链
⛳6.3.3 基于 Refine 的检索式问答链
✨6.4实验:状态记录
📣7.聊天Chat
✨7.1复现之前代码
✨7.2记忆(Memory)
✨7.3对话检索链(ConversationalRetrievalChain)
✨7.4定义一个适用于您文档的聊天机器人
📣8.总结
让我们快速回顾本部分的主要内容:
- 使用 LangChain 的多种文档加载器,从不同源导入各类数据。
- 将文档分割为语义完整的文本块,并讨论了其中的一些微妙之处。
- 为这些块创建了 Embedding,并将它们放入向量存储器中,并轻松实现语义搜索。
- 讨论了语义搜索的一些缺点,以及在某些边缘情况中可能会发生的搜索失败。
- 介绍多种高级检索算法,用于克服那些边缘情况。
- 与 LLMs 相结合,将检索结果与问题传递给 LLM ,生成对原始问题的答案。
- 对对话内容进行了补全,创建了一个完全功能的、端到端的聊天机器人。
通过学习本部分内容,我们已经掌握了如何使用 LangChain 框架,访问私有数据并建立个性化的问答系 统。这是一个快速迭代的领域,希望您能持续关注新技术。