成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

LanceDB:為 AI 應(yīng)用打造的高效嵌入式向量數(shù)據(jù)庫

發(fā)布于 2024-12-24 11:41
瀏覽
0收藏

當(dāng)前,向量數(shù)據(jù)庫已經(jīng)成了一個紅海市場,新興的還是傳統(tǒng)數(shù)據(jù)庫廠商都在做這方面的工作。然而,在嵌入式,端上的向量數(shù)據(jù)庫比較少,chromaDB算是其中一個,但它不算是一個純原生、深度優(yōu)化的的嵌入式向量數(shù)據(jù)庫,仍采用parquet格式(讀一行數(shù)據(jù)需要讀取整個塊解壓,比較慢,另外副本占用空間),功能也比較少,那有沒有更好的選擇呢?很多人自然想到關(guān)系型嵌入式數(shù)據(jù)庫王者——Sqlite,奈何它的向量版本 sqlite-vec還處于開發(fā)中,那有沒有文檔性能還好的替代品呢?LanceDB是一個選擇。

LanceDB 是一個專為構(gòu)建 AI 應(yīng)用而設(shè)計的開源向量數(shù)據(jù)庫。它采用嵌入式架構(gòu),無需部署獨(dú)立服務(wù)器,可以輕松集成到各種應(yīng)用場景中。

LanceDB:為 AI 應(yīng)用打造的高效嵌入式向量數(shù)據(jù)庫-AI.x社區(qū)

核心功能和優(yōu)勢在于:

  1. 嵌入式架構(gòu)。與需要部署服務(wù)器的 Qdrant 等產(chǎn)品不同,LanceDB 采用嵌入式設(shè)計,作為應(yīng)用的一部分運(yùn)行,易于集成且無需額外的基礎(chǔ)設(shè)施管理。
  2. 專為AI設(shè)計的Lance 數(shù)據(jù)格式(最大亮點(diǎn))。LanceDB 使用專門優(yōu)化的 Lance 列式存儲格式,相比傳統(tǒng)的 Parquet 格式具有更快的掃描速度。它支持?jǐn)?shù)據(jù)分片,只加載必要的數(shù)據(jù)片段,大大減少 IO 開銷。同時具有機(jī)器學(xué)習(xí)所需的自動數(shù)據(jù)版本管理能力,不同的版本會關(guān)聯(lián)該版本相關(guān)文件、模式及 blob 的元數(shù)據(jù),更新數(shù)據(jù)時無需完整重寫(Zero-copy)。

LanceDB:為 AI 應(yīng)用打造的高效嵌入式向量數(shù)據(jù)庫-AI.x社區(qū)

相較于其他的常見格式對比,在機(jī)器學(xué)習(xí)場景場景中優(yōu)勢明顯:

LanceDB:為 AI 應(yīng)用打造的高效嵌入式向量數(shù)據(jù)庫-AI.x社區(qū)

數(shù)據(jù)cap理論


Lance

Parquet & ORC

JSON & XML

TFRecord

Database

Warehouse

Analytics

Fast

Fast

Slow

Slow

Decent

Fast

Feature Engineering

Fast

Fast

Decent

Slow

Decent

Good

Training

Fast

Decent

Slow

Fast

N/A

N/A

Exploration

Fast

Slow

Fast

Slow

Fast

Decent

Infra Support

Rich

Rich

Decent

Limited

Rich

Rich

  1. 高性能向量搜索。基于 Rust 語言開發(fā),具有優(yōu)秀的性能表現(xiàn)。根據(jù)官方基準(zhǔn)測試,在同等硬件條件下,對于 128 維向量的 10 億規(guī)模數(shù)據(jù)集,查詢延遲可以控制在 100ms 以內(nèi)。并且支持GPU加速。
  2. 豐富的生態(tài)集成。LanceDB 原生支持 Python 和JavaScript/TypeScript,并與 LangChain 、LlamaIndex 等主流 AI 框架無縫集成。同時也支持 Apache Arrow 、Pandas 、Polars 、DuckDB 等數(shù)據(jù)處理工具。
  3. 多模態(tài)數(shù)據(jù)支持。除了向量數(shù)據(jù),LanceDB 還能高效存儲和檢索文本、圖像、音頻等非結(jié)構(gòu)化數(shù)據(jù),無需額外的存儲解決方案。

使用 LanceDB 非常簡單,下面是使用示例:

  • Python版本:

import lancedb

# 連接數(shù)據(jù)庫
db = lancedb.connect("data/sample-lancedb")

# 創(chuàng)建表并插入數(shù)據(jù)
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}])

# 執(zhí)行向量搜索
result = table.search([100, 100]).limit(2).to_pandas()
  • js版本,搭配transformers使用。

async function example() {

    const lancedb = require('vectordb')

    // Import transformers and the all-MiniLM-L6-v2 model (https://huggingface.co/Xenova/all-MiniLM-L6-v2)
    const { pipeline } = await import('@xenova/transformers')
    const pipe = await pipeline('feature-extraction', 'Xenova/all-MiniLM-L6-v2');


    // Create embedding function from pipeline which returns a list of vectors from batch
    // sourceColumn is the name of the column in the data to be embedded
    //
    // Output of pipe is a Tensor { data: Float32Array(384) }, so filter for the vector
    const embed_fun = {}
    embed_fun.sourceColumn = 'text'
    embed_fun.embed = async function (batch) {
        let result = []
        for (let text of batch) {
            const res = await pipe(text, { pooling: 'mean', normalize: true })
            result.push(Array.from(res['data']))
        }
        return (result)
    }

    // Link a folder and create a table with data
    const db = await lancedb.connect('data/sample-lancedb')

    const data = [
        { id: 1, text: 'Cherry', type: 'fruit' },
        { id: 2, text: 'Carrot', type: 'vegetable' },
        { id: 3, text: 'Potato', type: 'vegetable' },
        { id: 4, text: 'Apple', type: 'fruit' },
        { id: 5, text: 'Banana', type: 'fruit' }
    ]

    const table = await db.createTable('food_table', data, embed_fun)


    // Query the table
    const results = await table
        .search("a sweet fruit to eat")
        .metricType("cosine")
        .limit(2)
        .execute()
    console.log(results.map(r => r.text))

}

example().then(_ => { console.log("Done!") })

更多參考資源:??https://github.com/lancedb/vectordb-recipes??

相比需要部署服務(wù)器的向量數(shù)據(jù)庫,LanceDB 的嵌入式架構(gòu)特別適合:

  • 需要在本地運(yùn)行的桌面應(yīng)用
  • 資源受限的邊緣計算環(huán)境
  • 對數(shù)據(jù)隱私有嚴(yán)格要求的場景
  • 快速原型開發(fā)和測試

雖然在處理海量數(shù)據(jù)時,LanceDB 展現(xiàn)出了顯著的性能優(yōu)勢,但對于大多數(shù)中小規(guī)模的 AI 應(yīng)用來說,開發(fā)效率和易用性可能是更重要的考慮因素。LanceDB 簡單直觀的 API 設(shè)計和完善的生態(tài)支持,使其成為構(gòu)建各類 AI 應(yīng)用的理想選擇。

小結(jié)

事實(shí)上,當(dāng)前很多的應(yīng)用都選擇lancedb作為其實(shí)現(xiàn)方案,比如微軟的GraphRAG,Character AI , MidJourney等,它們也獲得了YC 800 萬美元的種子輪融資。2025年,我們將迎來多模態(tài)LLM應(yīng)用的爆發(fā),這也將會帶來向量數(shù)據(jù)庫的新一輪的熱潮,作為嵌入式向量數(shù)據(jù)庫的最佳代表,無論是用于構(gòu)建原型還是部署生產(chǎn)環(huán)境,都是一個值得考慮的選擇,甚至可能是不二選擇。

參考:

??https://blog.lancedb.com/new-funding-and-a-new-foundation-for-multimodal-ai-data/??

??https://lancedb.github.io/??

??https://github.com/lancedb/lancedb??

本文轉(zhuǎn)載自 ??AI工程化??,作者: ully

收藏
回復(fù)
舉報
回復(fù)
相關(guān)推薦
主站蜘蛛池模板: www.中文字幕.com | 久久不射电影网 | 久久久久一区二区 | 中文二区| 久久久久久九九九九 | 91精品久久久久 | 亚洲国产中文字幕 | 欧美成人免费在线视频 | 香蕉久久久 | 在线看一区二区三区 | 精品国产18久久久久久二百 | 91视视频在线观看入口直接观看 | 91在线观看网址 | 蜜臀久久99精品久久久久久宅男 | 日韩久久久久久 | 性高湖久久久久久久久aaaaa | 国产伦精品一区二区三毛 | 中文字幕在线不卡播放 | 午夜av毛片 | 国产精品久久久久久久久久久久冷 | 国产精品成人一区二区三区 | 99久久精品一区二区成人 | 亚洲精品影院 | 九九综合 | 丝袜 亚洲 欧美 日韩 综合 | a级片在线观看 | 国产精品福利视频 | 91社区在线观看播放 | 一区二区三区国产好的精 | 精品一区二区三区在线观看国产 | 国产中文字幕在线观看 | 无码一区二区三区视频 | 99精品在线| 国产偷久久一级精品60部 | 久久精品国产久精国产 | 视频一区二区在线观看 | 欧美a区 | 久久蜜桃资源一区二区老牛 | www.日韩系列| 久久高清 | 国产精品久久国产精品99 |