AI大模型开发架构设计(13)——LLM大模型的向量数据库应用实战
文章目录
- LLM大模型的向量数据库应用实战
- 1 大模型的局限性
- 大模型的4点局限性
- 大模型的4点局限性的改进实践方法
- 2 向量数据库使用场景以及改建大模型
- 向量数据库
- 向量数据库选型
- 知识库
- 文档检索增强(Retrieval Augmented Generation)
- 3 向量数据库应用技术架构剖析
- 向量数据库应用技术总体架构
- 向量数据库应用离线索引技术
- 向量数据库应用在线检索技术
- 4 利用向量检索构建知识库案例实战库
- 总体流程3大步骤
- 向量数据库选型
- 写入向量数据库(离线索引)
- 使用向量数据库(在线检索)
- 私人助手回答结果
LLM大模型的向量数据库应用实战
1 大模型的局限性
大模型的4点局限性
- 缺乏领域特定信息:LLM仅基于公开数据预训练,缺乏领域特定信息、专有/专业数据等非公开数据
- 容易产生幻觉:LLM只能根据现有数据提供信息和答案,如果超出该范围,LLM回提供错误或捏造的信息
- 无法获取最新信息/知识:LLM训练成本十分高昂(训练ChatGPT-3的成本高达 140万美金),LLM无法及时更新知识库
- “不变”的预训练数据:LLM使用的预训练数据可能包含过时或者不正确的信息,并且这些数据无法更正或删除
大模型的4点局限性的改进实践方法
- 缺乏领域特定信息:
- 利用向量数据库建立知识库,拓展 LLM 的认知边界
- 微调(Fine-tuning)针对专业领域进行特定训练
- 容易产生幻觉:
- 使用提示词工程 Prompt Engineering 规定限制
- 无法获取最新信息/知识:
- 利用向量数据库为大模型建立记忆,及时更新
- “不变”的预训练数据:
- RLHF(Reinforcement Learning from Human Feedback)人工纠正再次微调
- 从知识库中删除无效信息
2 向量数据库使用场景以及改建大模型
用向量数据库/知识库改进大模型
向量数据库
- 向量是非结构化数据在高维空间中的表征
- Embedding Model 是将非结构化数据映射到高维空间的工具
- 使用合适的 Embedding Model,向量的近似度代表语义的近似度

- Embedding过程

向量数据库选型
- 国产:Milvus、Tencent Cloud VectorDB、Zilliz Cloud 等
- 海外:Pincone(免费)、Redis、FAISS、PgVector、Elasticsearch Cloud 等
- 技术架构:

知识库
- 知识图谱
- 全文检索
- 知识库和向量数据库关系
- 大模型应用离不开向量检索

文档检索增强(Retrieval Augmented Generation)
- 利用提前构建好的知识库,通过检索与 Query 相关的知识片段来增强大模型回答效果

😁 RAG 优势——更经济、更具可行性、更具扩展性
- 容易管理
- 更精确和上下文相关的答案
- 适应性强、敏捷性强
- 更好的模糊搜索能力
😌 Fine-tuning 不足
- 适用于较小的知识数据库
- 没有知识访问控制
- 前期成本高,维护成本高
- 知识更新不及时
3 向量数据库应用技术架构剖析
向量数据库应用技术总体架构
- 以一个在线查询为例:

🌰

向量数据库应用离线索引技术
离线索引更多优化
- 针对文档特性(语言、内容)选择 Embedding 模型
- 更有针对性的文档分段模型
- 文档转问题,用问题召回

向量数据库应用在线检索技术
在线检索更多优化
- 用户问题改写,使用改写的问题召回
- 多路召回,结合全文检索的结果
- 把问题编造成“假”文档,使用“假”文档召回

4 利用向量检索构建知识库案例实战库
构建私人智能助手整体架构设计
总体流程3大步骤
- 将私人数据转换为向量数据,并写入到向量数据库中
- 根据 Prompt 从向量数据库中提取相似数据
- 结合相似数据重新组装 Prompt,让 ChatGPT 生成回答

向量数据库选型
- 推荐 Pinecone 向量数据库:https://www.pinecone.io/
- 免费、秒审通过
- 核心三个参数
- 索引名称:满足规范
- 特征维度:向量维度,OpenAI 转化为 1536 维
- 度量距离指标:提供了3种,推荐 cosine

写入向量数据库(离线索引)
- 安装对应的 Python 库:
pip install pinecone-client - 写入向量数据(采用读取文件形式)
- 将所有数据从文档中读取出来
- 通过 OpenAI Embedding 转换成对应的向量化数据
- 将向量化数据存储到 Pinecone 创建的 index 中

- 在 Pinecone 网站查看这份数据

使用向量数据库(在线检索)
- 从 Pinecone 获取指定的索引

- 将 Prompt 转换为向量数据,从向量数据库提取相似数据

- 将提取的数据与 Prompt 重新构建输入,发送给 ChatGPT
- ChatGPT 整理内容后输出结果

私人助手回答结果
- 关于亚运会首日中国金牌信息,可以看到完美成为了我们的私人智能助手来回答问题

相关文章:
AI大模型开发架构设计(13)——LLM大模型的向量数据库应用实战
文章目录 LLM大模型的向量数据库应用实战1 大模型的局限性大模型的4点局限性大模型的4点局限性的改进实践方法 2 向量数据库使用场景以及改建大模型向量数据库向量数据库选型知识库文档检索增强(Retrieval Augmented Generation) 3 向量数据库应用技术架构剖析向量数据库应用技…...
WPF中Grid、StackPanel、Canvas、WrapPanel常用属性
Grid常用属性 Grid 控件在 WPF 中非常强大,它提供了多种属性来定义行和列的布局。以下是一些常用的 Grid 属性: RowDefinitions 和 ColumnDefinitions: Grid 控件使用 RowDefinitions 和 ColumnDefinitions 来定义行和列的集合。每个 RowDef…...
【芙丽芳丝净润洗面霜和雅漾舒护活泉喷雾
1. 洁面产品: - 芙丽芳丝净润洗面霜:氨基酸洗面奶的经典产品,成分温和,不含酒精、香料等刺激性成分。泡沫丰富细腻,能够有效清洁皮肤的同时,不会过度剥夺皮肤的油脂,洗后皮肤不紧绷,…...
ubuntu更新Cmake
CMake 先验知识创建软链接如何删除符号链接如何找出失效链接并将其删除PATH 优先级查看当前CMake命令的位置 高版本 CMake 安装参考 先验知识 创建软链接 ln -s <path to the file/folder to be linked> <the path of the link to be created>ln 是链接命令&…...
CMOS晶体管的串联与并联
CMOS晶体管的串联与并联 前言 对于mos管的串联和并联,一直没有整明白,特别是设计到EDA软件中,关于MOS的M和F参数,就更困惑了,今天看了许多资料以及在EDA软件上验证了电路结构与版图的对应关系,总算有点收…...
从IT高管到看门大爷:53岁我的职场华丽转身
该文讲述了一位1971年出生的男士,在53岁时因日企撤资而失业。他曾是IT技术员,后晋升为IT高管兼工会主席,但失业后数百份简历石沉大海,面试也因年龄被取消。他意识到年龄是求职的障碍,开始调整心态,降低期望…...
Redis入门到精通(三):入门Redis看这一篇就够了
文章目录 Redis分布式锁的实现原理Redis实现分布式锁如何合理的控制锁的有效时常?**redisson实现的分布式锁**redisson实现的如何保证主从一致性 Redis的集群方案1.主从复制主从数据的同步原理全量同步增量同步 2.哨兵模式Redis的集群脑裂是什么?3.分片集…...
IP基本原理
IP的定义 当前唯一的网络层协议标准定义数据网络层的封装方式、编址方法 MTU 最大传输单元接口收发数据支持的单个包的最大长度不同二层链路类型的接口的MTU不一致。以太网接口默认MTU1500Byte。PPPoE接口默认MTU1480Byte。 IP头部封装格式 IP 头部长度不固定,2…...
数据分析题面试题系列2
一.如何估算星巴克一天的营业额 a.需求澄清:区域?节假日?产品范围? b.收入销售杯数*单价(营业时间*每小时产能*每小时产能利用率)*平均单价 Hypo该星巴克门店的营业时间为12小时(取整&#x…...
uniapp 单表、多级动态表单添加validateFunction自定义规则
uniapp 多级动态表单添加自定义规则 在uniapp制作小程序时,当涉及到需要设置validateFunction的校验规则时。可能遇到的问题 1、validateFunction不生效,没有触发 2、多层级表单怎么添加validateFunction自定义校验规则 本文将以单表单校验和多表单校…...
FPGA高端图像处理培训第一期,提供工程源码+视频教程+FPGA开发板
目录 1、FPGA图像处理培训现状分析2、本FPGA图像处理培训优势亮点架构全起点高实用性强项目应用级别细节恐怖工程源码清晰 3、本FPGA图像处理培训内容介绍图像处理基本框架图像前处理框架图像中处理框架图像前中处理框架图像后处理框架图像中后处理框架图像处理仿真框架视频教程…...
顺序表的实现(数据结构)——C语言
目录 1.结构与概念 2.分类 3 动态顺序表的实现 SeqList.h SeqList.c 创建SLInit: 尾插SLPushBack以及SLCheak(检查空间是否足够): 头插SLPushFront: 尾删SLPopBack 头删SLPopFront 查找指定元素SLFind 指定…...
【VUE】Vue中 computed计算属性和watch侦听器的区别
核心功能不同 computed 是一个计算属性,其核心功能是基于已有的数据属性计算得出新的属性值。当某个依赖的数据发生变化时,computed 会自动重新计算并更新自己的值。因此,可以将 computed 看做是一种“派生状态”。 watch 是一个观察者函数&…...
linux线程 | 同步与互斥 | 深度学习与理解同步
前言:本节内容主要讲解linux下的同步问题。 同步问题是保证数据安全的情况下,让我们的线程访问具有一定的顺序性。 线程安全就规定了它必须是在加锁的场景下的!!那么, 具体什么是同步问题, 我们加下来看看吧…...
Tkinter Frame布局笔记--做一个简易的计算器
#encodingutf-8 import tkinter import re import tkinter.messagebox import tkinter.simpledialog import sys import os def get_resources_path(relative_path):if getattr(sys,frozen, False):base_pathsys._MEIPASS#获取临时文件else:base_pathos.path.dirname(".&q…...
算法专题八: 链表
目录 链表1. 链表的常用技巧和操作总结2. 两数相加3. 两两交换链表中的节点4. 重排链表5. 合并K个升序链表6. K个一组翻转链表 链表 1. 链表的常用技巧和操作总结 常用技巧 画图!!! 更加直观形象, 便于我们理解引入虚拟头节点, 方便我们对链表的操作, 减少我们对边界情况的考…...
MySQL中关于NULL值的六大坑!你被坑过吗?
NULL值是我们在开发过程中的老朋友了,但是这个老朋友在MySQL中有很多坑,我通过这篇文章来总结分享一下,欢迎大家在评论区分享你的看法和踩坑经历。 1、NULL不等于NULL 在MySQL中,执行以下SQL会返回NULL 假如t表有以下数据&#…...
学生学习动机测试:激发潜能,引领未来
学习动机、学习兴趣和学习目标制定是影响学生学习成效的三个关键因素。通过对学生学习动机的测试,我们可以深入了解学生的学习状态,进而采取针对性的措施,激发他们的学习潜能,引导他们走向更加光明的未来。本文将从学习动机、学习兴趣和学习目标制定三个方面,详细探讨学生…...
基于SSM党务政务服务热线管理系统的设计
管理员账户功能包括:系统首页,个人中心,用户管理,部门管理,办事信息管理,信息记录管理,系统管理 前台账号功能包括:系统首页,个人中心,部门,信息…...
OSI参考模型详解:初学者指南与实践案例
OSI参考模型详解:初学者指南与实践案例 OSI(Open System Interconnect)参考模型是一个由国际标准化组织(ISO)提出的七层网络分层模型,它为全球所有互联计算机系统提供了一个通用的通信框架,解决…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
