当前位置: 首页 > article >正文

LLMs之VDB:LanceDB的简介、安装和使用方法、案例应用之详细攻略

LLMs之VDB:LanceDB的简介、安装和使用方法、案例应用之详细攻略

目录

LanceDB的简介

1、LanceDB的主要特性

2、为何选择 LanceDB?

LanceDB的安装和使用方法

1、安装方法

Javascript/Typescript

Python

2、使用方法

Javascript

Python

LanceDB的案例应用

1、基于LanceDB搭建RAG系统

LLMs之RAG:采用小LLM(不只用在生成阶段/Llama-3.2-1B-Instruct)进行文本摘要和提取关键词并存储到向量数据库(LanceDB)进而提高RAG系统的检索召回率——判断硬件是否支持GPU和BF16策略→数据预处理(加载并处理PDF/连接向量数据库LanceDB并创建表)→加载分词器、LLMs和嵌入模型→利用LLM(+纠正策略)对每页提取摘要及其关键词并解析为Json然后针对二者执行向量化最后存储到LanceDB数据库表中→基于query计算与table中摘要相似性提取Top列表然后指令提示LLM对摘要输出排名→指令提示LLM结合提取选定摘要所对应的原始内容来生成最终答案

LLMs之RAG:采用小LLM(不只用在生成阶段/Llama-3.2-1B-Instruct)进行文本摘要和提取关键词并存储到向量数据库(LanceDB)进而提高RAG系统的检索召回率


LanceDB的简介

LanceDB 是一个用于 AI 的开源向量数据库,旨在存储、管理、查询和检索大规模多模态数据的嵌入。LanceDB 的核心是用 Rust编写的,并建立在Lance之上,Lance 是一种开源列式数据格式,专为高性能 ML 工作负载和快速随机访问而设计。
>> 核心功能:LanceDB 是一个开源的向量数据库,用于存储、管理、查询和检索大规模多模态数据中的嵌入。它支持多种数据类型,包括文本、图像、视频、点云等。
>> 技术架构:LanceDB 的核心是用 Rust 编写,基于 Lance(一种为高性能机器学习工作负载设计的开源列式数据格式)。Lance 格式支持自动数据版本控制和快速检索。
>> 主要优势:易于使用、可扩展、经济高效。与其他向量数据库相比,LanceDB 的主要优势在于它不仅存储嵌入和元数据,还支持存储实际数据本身,简化了数据管理和版本控制。
>> 部署方式:提供开源 (OSS) 和云端 (Cloud) 两种部署方式。OSS 版本是嵌入式的,无需管理服务器;Cloud 版本是无服务器的 SaaS 服务,具有成本效益和高可扩展性。

LanceDB 是一款功能强大、易于使用且高效的向量数据库,适用于各种多模态 AI 应用场景。它独特的架构和多模态支持使其在众多向量数据库中脱颖而出。
LanceDB是一个面向开发者的、无服务器的向量数据库,专为AI应用而设计。它可以轻松地为你的大型语言模型(LLM)应用添加长期记忆功能。它是一个开源数据库,用于向量搜索,并使用持久性存储构建,这极大地简化了嵌入的检索、过滤和管理。
LanceDB 提供了一个易于使用的接口,结合了向量搜索多模态数据支持和多种查询方式,并具有良好的性能和扩展性,使其成为构建各种 AI 应用的理想选择。 其无服务器特性进一步简化了部署和维护。

GitHub地址:GitHub - lancedb/lancedb: Developer-friendly, serverless vector database for AI applications. Easily add long-term memory to your LLM apps!

文档地址:LanceDB - LanceDB

1、LanceDB的主要特性

>> 生产规模的向量搜索,无需管理服务器。 这意味着你可以专注于你的应用逻辑,而无需担心数据库的运维。
>> 存储、查询和过滤向量、元数据和多模态数据(文本、图像、视频、点云等等)。 它支持多种数据类型,使得它可以应用于更广泛的场景。
>> 支持向量相似性搜索、全文搜索和SQL。 这提供了多种查询方式,以满足不同的需求。
>> 原生Python和Javascript/Typescript支持。 方便开发者使用熟悉的语言进行开发。
>> 零拷贝、自动版本控制,无需额外基础设施即可管理数据版本。 简化了数据管理流程。
>> GPU支持构建向量索引(*)。 (*) 表示此功能可能需要额外的配置或依赖。
>> 与LangChain、LlamaIndex、Apache-Arrow、Pandas、Polars、DuckDB等生态系统集成,更多集成正在进行中。 方便与其他工具和库集成使用。
>> LanceDB的核心是用Rust编写的,并使用Lance(一个为高性能机器学习工作负载设计的开源列式格式)构建。

2、为何选择 LanceDB?

>> 嵌入式与无服务器架构:LanceDB既支持嵌入式(开源软件)也支持无服务器(云服务),用户无需管理服务器

>> 快速的生产级向量相似度搜索:提供快速的生产规模向量相似度、全文及混合搜索,并通过DataFusion支持SQL查询接口。

>> 多语言支持:支持Python、Javascript/Typescript和Rust语言。

>> 多模态数据存储与管理:不仅能存储和管理嵌入向量及元数据,还支持文本、图像、视频、点云等多模态数据类型。

>> 与Arrow生态系统紧密集成:允许在共享内存中进行真正的零拷贝访问,并支持SIMD和GPU加速。

>> 自动数据版本控制:无需额外基础设施即可管理数据版本。

>> 基于磁盘的索引与存储:支持大规模扩展而不需要高昂成本。

>> 直接摄取多种数据格式:支持直接摄取pandas DataFrames、Pydantic对象、Polars(即将支持)等多种数据格式。

LanceDB的安装和使用方法

1、安装方法

Javascript/Typescript

npm install @lancedb/lancedb

Python

pip install lancedb

2、使用方法

以下分别展示了Javascript和Python的示例代码:

Javascript

这个例子展示了如何连接数据库,创建表,进行向量搜索以及根据特定条件查询。

import * as lancedb from "@lancedb/lancedb";

const db = await lancedb.connect("data/sample-lancedb");
const table = await db.createTable("vectors", [
	{ id: 1, vector: [0.1, 0.2], item: "foo", price: 10 },
	{ id: 2, vector: [1.1, 1.2], item: "bar", price: 50 },
], {mode: 'overwrite'});


const query = table.vectorSearch([0.1, 0.3]).limit(2);
const results = await query.toArray();

// You can also search for rows by specific criteria without involving a vector search.
const rowsByCriteria = await table.query().where("price >= 10").toArray();

Python

这个例子展示了如何使用Python连接数据库,创建表,并进行向量搜索,并将结果转换为Pandas DataFrame。

import lancedb

uri = "data/sample-lancedb"
db = lancedb.connect(uri)
table = db.create_table("my_table",
                         data=[{"vector": [3.1, 4.1], "item": "foo", "price": 10.0},
                               {"vector": [5.9, 26.5], "item": "bar", "price": 20.0}])
result = table.search([100, 100]).limit(2).to_pandas()

LanceDB的案例应用

持续更新中……

1、基于LanceDB搭建RAG系统

LLMs之RAG:采用小LLM(不只用在生成阶段/Llama-3.2-1B-Instruct)进行文本摘要和提取关键词并存储到向量数据库(LanceDB)进而提高RAG系统的检索召回率——判断硬件是否支持GPU和BF16策略→数据预处理(加载并处理PDF/连接向量数据库LanceDB并创建表)→加载分词器、LLMs和嵌入模型→利用LLM(+纠正策略)对每页提取摘要及其关键词并解析为Json然后针对二者执行向量化最后存储到LanceDB数据库表中→基于query计算与table中摘要相似性提取Top列表然后指令提示LLM对摘要输出排名→指令提示LLM结合提取选定摘要所对应的原始内容来生成最终答案

https://yunyaniu.blog.csdn.net/article/details/144091583

LLMs之RAG:采用小LLM(不只用在生成阶段/Llama-3.2-1B-Instruct)进行文本摘要和提取关键词并存储到向量数据库(LanceDB)进而提高RAG系统的检索召回率

https://yunyaniu.blog.csdn.net/article/details/144097611


http://www.kler.cn/a/501226.html

相关文章:

  • 基于深度学习算法的AI图像视觉检测
  • HQChart使用教程30-K线图如何对接第3方数据44-DRAWPIE数据结构
  • Day04-后端Web基础——Maven基础
  • 超完整Docker学习记录,Docker常用命令详解
  • neo4j 安装 (提供镜像下载方式
  • Cesium加载地形
  • openEuler22.03系统使用Kolla-ansible搭建OpenStack
  • scss不错的用法
  • AI在软件工程教育中的应用与前景展望
  • sql正则表达
  • 【Git原理与使用】版本回退reset 详细介绍、撤销修改、删除文件
  • 【C++】string的关系运算与比较分析
  • macOS 安装tomcat9
  • Maven在不同操作系统上如何安装?
  • 【Docker】入门教程
  • openEuler 22.04使用yum源最快速度部署k8s 1.20集群
  • 【2024年华为OD机试】(A卷,100分)- 处理器问题(Java JS PythonC/C++)
  • Vscode辅助编码AI神器continue插件
  • PlantUml使用向导
  • Java堆内存分析
  • Spring Boot教程之五十五:Spring Boot Kafka 消费者示例
  • 基于Java 的高性能缓存库 Caffeine 详细介绍
  • golang单元测试
  • [QCustomPlot] 交互示例 Interaction Example
  • 项目开发实践——基于SpringBoot+Vue3实现的在线考试系统(五)
  • 银河麒麟服务器操作系统桌面任务栏网络图标消失问题