ITPub博客

首页 > 数据库 > 数据库开发技术 > 快收藏!构筑私有大模型你必须知道的(基于ChatGLM2-6B + LangChain)

快收藏!构筑私有大模型你必须知道的(基于ChatGLM2-6B + LangChain)

原创 数据库开发技术 作者:极客e家 时间:2024-01-03 17:52:48 0 删除 编辑

基础概念





废话不多说,直接上干货。


1、什么是向量数据库?

向量数据库(Vector Database),也叫矢量数据库,可以存储复杂的文件类型,主要应用于人工智能、机器学习、数据挖掘等领域。


图像、文本和音视频这种非结构化数据都可以利用Embedding技术将高维度的数据(例如文字、图片、 音频)映射到低维度空间,即把图片、音频和文字转化为向量来表示,将这些向量存储起来就构成向量数据库,从而实现对图像、文本和音视频的相似性搜索和检索。


这意味着您可以使用向量数据库根据语义或上下文含义查找最相似或相关的数据,而不是使用基于精确匹配或预定义标准查询数据库的传统方法。向量数据库的主要特点是高效存储与检索。利用索引技术和向量检索算法能实现高维大数据下的快速响应。


用的比较多的几个向量数据库推荐:


1、Faiss(开源)

2、Milvus(开源)

3、Weaviate(开源)

4、Chroma(开源)

5、Pinecone(最火的商业向量数据库)


2、什么是Embedding模型?

在机器学习和自然语言处理中,Embedding模型是指将高维度的数据(例如文字、图片、视频)映射到低维度空间的过程。


embedding向量包含语义信息,含义越相近的单词,embedding向量在空间中的位置也越相近。实值向量embedding可以通过从大量的数据中学习单词的语义和上下文信息,从而可以进行向量运算和在不同自然语言处理任务中共享和迁移。


常见的Embedding模型有很多种类,比如Word Embeddings(用于将自然语言文本中的单词映射为连续向量表示的模型),Entity Embeddings(用于将实体(如图像、视频、音频)映射为向量表示的模型,通常用于计算机视觉和多模态任务)等。比如你想做一个企业内部的问答系统,基于中文场景去训练,可以考虑用m3e或许比text2vec更适合。


3、什么是LLM模型,和Embedding模型有什么关系?

LLM(Large Language Models)相信大家都知道,通常是指那些使用深度学习技术训练的大规模自然语言处理模型。比如现在ChatGPT、BERT、文心一言、ChatGLM等。


与Embedding模型的关系在于,大型语言模型通常包括嵌入层(Embedding Layer)作为其基本组成部分之一。这些模型使用嵌入层来将输入文本中的词汇嵌入为密集的向量表示。这些词汇嵌入向量通常是模型的初始输入,然后通过深度神经网络的多个层进行处理,以执行各种自然语言处理任务,如文本生成、文本分类、命名实体识别等。因此,Embedding模型是大型语言模型的一部分,用于将文本数据转化为适于深度学习的表示形式,并且有助于模型的性能提升。


4、LangChain是什么,有什么作用?

LangChain我个人感觉算是一个开源的应用框架,主要是为了简化使用大型语言模型 (LLM) 的应用程序的创建。它提供了一套工具、组件和接口,可降低开发者学习成本,方便开发者快速地开发复杂的LLMs应用,比如聊天机器人、文档分析、摘要、代码分析、工作流自动化、自定义搜索等。

也可以直接与OpenAI的ChatGPT模型以及Hugging Face集成,通过langChain可快速构建聊天机器人、生成式问答(GQA)、本文摘要等应用场景。

现在国内的Dify.AI也比较火,兼容LangChain。







具体案例




上面说了那么多,如何把这些串起来呢,下面我们来通过一个简单的场景进行说明。比如现在企业有一个需求,要基于企业内部的资料,去实现一个问答系统,我应该如何去做。


首先整体的技术选型:

UI:StreamLit(一个用于创建数据应用程序的Python库,快速、轻松地将数据可视化和交互化,而无需编写大量的前端代码)

应用框架:LangChain

大模型:ChatGLM2-6B(开源的、支持中英双语问答的对话语言模型,并针对中文进行了优化)

Embedding模型:M3e-base

向量数据库:Faiss


整体流程:

1、准备各种类型的文档,通过Embedding模型,将文本数据映射为向量表示。这里使用M3e-base,将问题和答案转化为向量。

2、使用Faiss构建向量索引,以便能够快速检索与输入问题相似的答案。将问题的嵌入向量添加到Faiss索引中,可以使用Faiss提供的API来实现。

3、将ChatGLM和LangChain进行集成,ChatGLM可以用于生成自然语言响应,而LangChain可以用于处理上下文和实现对话流程。

4、利用StreamLit创建可以交互会话的UI或API,可以将问题传递给ChatGLM和LangChain进行处理。

5、使用Faiss索引来检索与用户问题最相似的答案。

6、根据检索到的答案,使用ChatGLM和LangChain生成自然语言响应,将其返回给用户。


为了方便大家理解,我画了一张架构图,大家可以参考:


(正文完)

更多精彩内容,欢迎扫码加入免费知识星球
极客e家
,

共同打造极客文化。

原文作者:极客e家;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2023-01-24

  • 博文量
    115
  • 访问量
    94714