LangChain与昇腾

LangChain这个词今年已经听烂了,今天基于昇腾的角度总结一下:

Why LangChain ?

场景:构建一个LLM应用

在构建一个新项目时,可能会遇到许多API接口、数据格式和工具。要去研究每一个工具、接口很麻烦。

假设要构建一个智能聊天机器人,难道要一步步去学习如何训练一个语言模型,如何处理各种数据,还要解决所有的兼容性问题吗?

这就是LangChain的价值所在

LangChain是一个集成框架,提供一系列的工具和组件,使能语言模型中各种数据(如Google Analytics、Stripe、SQL、PDF、CSV等)的连接、语言模型的应用和优化,一切将简单直接。

————————————————————————————————————————————————————————————
LangChain好比一把“瑞士军刀”,不再需要为每一个任务找一个新工具,提供一站式解决方案。

正如要修理一个小家用电器,而你已经拥有一个完整的工具箱。不管遇到啥问题,打钉子、拧螺丝、剪线,工具箱里总有一个合适的工具。

LangChain提供了这样的工具箱,不仅涵盖了基础工具,还为个性化需求提供了自定义组件解决方案

正是因为LangChain连接了开发者和复杂的LLM应用,因此,开发变得更为简单、高效。越来越多的开发者,不论是LLM领域的还是非LLM领域的,都选择使用LangChain。

现代软件工程宗旨:将庞大复杂的系统划分为更小、更易于管理和使用的部分

LangChain以**“组件”** 和 **“链”**作为2个关键概念,为LLM应用开发者提供了便利。

  • 组件 不是代码的拼凑,而是一个具有明确功能和用途的单元。组件包括LLM模型包装器、聊天模型包装器及与数据增强相关的一系列工具和接口。这些组件就是LangChain中的核心,你可以把它们看作数据处理流水线上的各个工作站。每个组件都有其特定的职责,如处理数据的输入输出、转化数据格式。

  • 是将各种组件连接在一起的纽带,它能够确保组件之间的无缝集成和在程序运行环境中的高效调用。无论是对于LLM还是其他工具,链都扮演着至关重要的角色。举个例子,LLMChain,这是LangChain中最常用的链,它可以整合LLM模型包装器和记忆组件,让聊天机器人拥有“记忆”。

向量数据库

向量数据库(Vector Database)可高效存储和处理非结构化的数据,如文档、图片、视频、音频和纯文本等。

在信息完整的情况下,通过向量的嵌入函数来精准描写这些非结构化的数据的特征,从而实现向量搜索、查询、删除、修改、元数据过滤等功能。

向量数据库的核心是将文本、图片、音频等非结构化的信息转换成向量的形式存储在数据库中,当用户输入问题时,将问题转换成向量,最后在数据库中搜索最相似的向量和上下文,最后将结果返回给用户。
请添加图片描述
向量数据库和传统数据具有相似性,通过提供标准的sql访问接口,降低用户的使用门槛,同时提供高效的数据组织,检索和分析的能力。满足用户在存储和检索向量需求的同时,提供管理结构化数据的能力。

两者最大的区别在于传统数据库是一个精准的索引,查找到的内容存在正确答案,在数据库中的数据只有两类,一类是符合查询要求,可返回给用户;另一类则是不符合查询要求;而向量搜索则是一种模糊匹配,找到的是相对最符合需求的数据,而非一个精确的标准答案。

向量数据库依据保存和检索的不同可分为以下5类:

1)纯向量数据库:如Pinecone、Weaviate、Qdrant、Chroma、Zilliz、Vespa等专用于存储和检索向量,具有利用索引技术进行高效的相似性搜索,大数据集和查询工作负载的可扩展性,支持高维数据、基于HTTP和JSON的API,以及对向量运算(加法、减法、点积、余弦相似度)的原生支持等优点。

2)向量库:如Faiss、Annoy等,支持面相ANN的索引结构,包括倒排文件、乘积量化和随即投影,支持推荐系统、图片搜索和自然语言处理(NLP)。

3)全文搜索数据库:如Elastic、OpenSearch等,对于非结构化文本具有高扩展性和性能以及丰富的文本检索功能。

4)支持向量的非关系型(NoSQL)数据库:如DataStax、Cassandra、Rockset、MongoDB等,NoSQL数据库性能高、规模大。Neo4j(图形数据库)可与社交媒体或知识图谱的大语言模型融合。

5)支持向量的关系型(SQL)数据库:如ClickHouse、Singlestore、PostgreSQL等,多模型SQL数据库提供混合搜索,可将向量与其他数据结合,并且大多数SQL数据库可在云上部署服务。

请添加图片描述
非结构化的信息以向量的形式存储在向量数据库中

以猫为例,不同种类的猫可通过体型大小、毛发长度、腿长短等特征来区分。
下图中X-Y轴分别对应毛长和体型的数值,每只猫即可对应一个二维坐标点,由此可轻易将波斯猫、缅因猫和无毛猫区分开来,但仍然无法很好的区分波斯猫和西伯利亚猫。
通过继续添加腿的长短这一特征,得到一个三维的坐标系以及每只猫在三维坐标系中的位置,只要特征足够多就可以得到高维的坐标系。

向量是具有大小和方向的数学结构,将这些特征转化为向量表示,通过计算各向量之间的距离来判断它们的相似度,从而实现相似性搜索。
请添加图片描述
随着ChatGPT的发布,人工智能的发展迎来了新的时代,知识的存储与表达也有了新的标准,但其输入端上下文(tokens)大小的限制困扰着很多的开发者和消费者。

文本本身直接作为数据具有维度高、学习低效的缺点,因而大模型接触和学习的数据并非文本本身,而是向量化的文本,即大模型对自然语言的压缩和总结。

向量数据库是高维度的,可弥补生成式人工智能模型的这一缺陷。向量数据库通常用于支持复杂的查询操作,如相似性搜索,这种高效的索引和检索机制使向量数据库特别适用于机器学习和人工智能应用,提供强大的“记忆”能力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/291115.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Flume基础知识(三):Flume 实战监控端口数据官方案例

1. 监控端口数据官方案例 1)案例需求: 使用 Flume 监听一个端口,收集该端口数据,并打印到控制台。 2)需求分析: 3)实现步骤: (1)安装 netcat 工具 sudo yum …

java数据结构与算法刷题-----LeetCode70. 爬楼梯

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 很多人觉得动态规划很难,但它就是固定套路而已。其实动态规划只…

探索3D软件的奥秘:Maxon Cinema 4D与Autodesk Maya的比较

在3D软件的广阔天地中,Maxon Cinema 4D和Autodesk Maya无疑是两颗璀璨的明星。它们各自拥有独特的功能和特点,使它们在影视、广告、游戏等领域中广受欢迎。在这篇文章中,我们将深入探讨这两款软件的差异,以帮助您更好地了解它们。…

Python编程基础:顺序结构、循环结构、程序跳转语句、pass空语句

Python是一种简单而强大的编程语言,它提供了多种结构和语句,使得程序编写变得更加灵活和高效。在本文中,将介绍Python中的顺序结构、循环结构、程序跳转语句以及pass空语句,并解释如何正确使用它们。 目录 程序的描述方式自然语言…

真双端口ram相关知识点

WEA: RAM 端口 A 写使能信号,高电平表示向 RAM 中写入数据,低电平表示从 RAM 中读出数据。 ENA:端口 A 的使能信号,高电平表示使能端口 A ,低电平表示端口 A 被禁止,禁止后端口 A 上的读写操作…

论文解读Language-based Action Concept Spaces Improve Video Self-Supervised Learning

Language-based Action Concept Spaces Improve Video Self-Supervised Learning 基于语言的动作概念空间改善视频自我监督学习 备注: 最近研究需要,先将翻译概括内容放这里 论文地址:论文 https://arxiv.org/pdf/2307.10922v3.pdf 摘要 最近的对比…

【AI】使用LoFTR进行图像匹配测试Demo

LoFTR图像匹配的源码解析我们在上篇文章中已经写了,对于怎么试用一下,我这边再啰嗦一下。 0.环境搭建 详细的搭建教程请点击链接查看,这里只对需要特殊注意的地方做阐述 1.创建的Python环境采用python3.8的环境,因为文章发布较早…

2023 年最先进认证方式上线,Authing 推出 Passkey 无密码认证

密码并非是当前数字世界才有的安全手段。古今中外诸如故事中的《阿里巴巴与四十大盗》的“芝麻开门”口诀,或是江湖中“天王盖地虎,宝塔镇河妖”等传统的口令形式,都是以密码作为基本形态进行身份认证。然而,随着密码在越来越多敏…

第十四章 14.2案例:使用KVM命令集管理虚拟机

查看命令帮助 [rootLinux01 ~]# virsh -h—————————————————————————————————————————— 查看KVM的配置文件存放目录〈test01 , xml是虚拟机系统实例的配置文件) [rootLinux01 ~]# ls /etc/libvirt/qemu —————————————…

这个方法可以让你把图片无损放大

随着数字技术的不断发展,照片无损放大已经成为了摄影领域中的一项重要技术。照片无损放大能够让摄影师在不损失细节和画质的情况下,将照片放大到更大的尺寸,从而让观众能够更加清晰地欣赏到照片中的每一个细节。 今天推荐的这款软件主要是通…

redis服务迁移数据工具--RDM

一、背景: 在日常的运维工作经常遇见各种数据迁移工作,例如mysql数据库迁移、redis数据库迁移、minio数据迁移等等工作。这里介绍一下redis数据库的迁移过程。 二、迁移思路: redis服务/集群的数据迁移思路是需要新建一个配置、密码一样的re…

T527 camera: AHD摄像头转MIPI

一、AHD 常见的摄像头接口一般有MIPI、USB、DVP等等,但是MIPI摄像头受限于高速信号的传输距离问题,导致走线不能太长,这样在安防监控领域、车载等领域,使用就很受限,因此会引入AHD,目的就是提高了传…

Python 自学(三) 之序列的应用

目录 1. 序列的含义 2. 序列的索引 P80 3. 序列相加 P81 4. 序列乘法 P82 5. in 关键字 P83 6. 计算序列的最大值max(),最小值min()和长度len() P83 7. 列表的初始化 list() P85 8. 列表元素的添加,…

python的课后练习总结4(while循环)

for循环用于针对序列中的每个元素的一个代码块。 while循环是不断的运行&#xff0c;直到指定的条件不满足为止。 while 条件&#xff1a; 条件成立重复执行的代码1 条件成立重复执行的代码2 …….. i 1while i < 5:print(i)i i 11、使用wh…

多线程基础入门【Linux之旅】——下篇【死锁,条件变量,生产消费者模型,信号量】

目录 一&#xff0c;死锁 1. 死锁的必要条件 2&#xff0c;避免死锁 二&#xff0c;条件变量 同步概念与竞态条件 条件变量——初始化 静态初始化 动态初始化 pthread_cond_destroy (销毁) pthread_cond_wait (等待条件满足) pthread_cond_signal (唤醒线程) ph…

【深度学习:(Contrastive Learning) 对比学习】深入浅出讲解对比学习

对比学习允许模型从未标记的数据中提取有意义的表示。通过利用相似性和不相似性&#xff0c;对比学习使模型能够在潜在空间中将相似的实例紧密地映射在一起&#xff0c;同时将那些不同的实例分开。这种方法已被证明在计算机视觉、自然语言处理 &#xff08;NLP&#xff09; 和强…

见证比亚迪如何引领公交电动化猛进

我刚步入新能源车行业时&#xff0c;电动公交车就已然成为热词。只是当时各家厂商都还在探索阶段&#xff0c;市场环境也不支持电动化模式。如今转眼10年了&#xff0c;见证行业步入快车道。专注此道近10年&#xff0c;我亲身感受到新能源汽车由试验到定型的每一个过程。这次比…

发布订阅模式

1 什么是发布订阅者模式&#xff1a;定义了对象间的一种一对多的关系&#xff0c;让多个观察者对象同时监听某 一个主题对象&#xff0c;当一个对象发生改变时&#xff0c;所有依赖于它的对象都将得到通知。 代码演示&#xff1a;创建一个类&#xff1b;类里面拥有一…

Prometheus配置Grafana监控大屏

简介 Grafana是一个跨平台的开源的度量分析和可视化工具&#xff0c;可以通过将采集的数据查询然后可视化的展示&#xff0c;并及时通知。 主要特点 展示方式&#xff1a;快速灵活的客户端图表&#xff0c;面板插件有许多不同方式的可视化指标和日志&#xff0c;官方库中具有丰…

RK3568驱动指南|第九篇 设备模型-第106章 为什么注册总线之前要先注册设备实例分析实验

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…