首頁 > 科技週邊 > 人工智慧 > 在Sqlite中檢索增強發電

在Sqlite中檢索增強發電

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
發布: 2025-02-26 02:49:09
原創
561 人瀏覽過

這個分為兩部分的系列使用SQLite進行機器學習探索。 上一篇文章討論了SQLite在生產就緒的Web應用程序中的越來越多的作用。本文著重於使用sqlite實施檢索功能。

>

>用於使用生成AI的自定義Web應用程序,請訪問losangelesaiapps.com >

代碼可用

>在此處

傳統的抹布實施通常涉及:

    >在抹布上搜索教程。
  1. 選擇一個流行的框架(Langchain,LlamainDex)。
  2. 選擇一個雲向量數據庫(Pinecone,Weaviate)。
  3. >
  4. 集成這些組件。
  5. 有效,這種方法可能過於復雜,尤其是對於初學者而言。 本文使用SQLITE和
擴展和OpenAI API演示了一種更簡單的方法。 本系列的第1部分提供了SQLite功能的詳細概述。 對於本文,將SQLite的簡單性視為單文件數據庫就足夠了。

> sqlite-vec這種方法消除了對雲矢量數據庫和笨重框架的需求。

>

sqlite-vec:擴展sqlite的功率

Sqlite的強度在於其可擴展性。 與Python庫類似的擴展名添加了C中寫入的功能。一個很好的示例是全文搜索(FTS)擴展。 添加矢量搜索功能,從而使語義理解超出關鍵字匹配。 尋找“馬”可能會返回“馬術”或“小馬”。

使用虛擬表,提供:sqlite-vec

>sqlite-vec>自定義數據源:

數據可以駐留在數據庫文件之外(例如,CSV,API)。
  • 靈活功能:支持專業的索引和復雜的數據類型。
  • >無縫集成:與標準sqlite查詢語法集成。
  • >模塊:
  • 後端邏輯是在單獨的模塊中實現的。 使用:
  • >創建虛擬表
  • >指定模塊(在此,
)。

CREATE VIRTUAL TABLE my_table USING my_extension_module();
登入後複製
登入後複製
代碼演練

my_extension_module() vec0代碼(sqlite-vecrepo link

)使用

文件作為示例數據(主要是物理相關)。 是sqlite數據庫文件。

>安裝:.txtmy_docs.db>列出了必要的庫(

  1. )。創建一個虛擬環境並運行

    requirements.txt sqlite-vec>openaiopenai api鍵:python-dotenv獲取openai api鍵。 pip install -r requirements.txt

  2. > 加載擴展名:python代碼加載sqlite-vec>擴展名並創建一個虛擬表:

CREATE VIRTUAL TABLE my_table USING my_extension_module();
登入後複製
登入後複製

documents表存儲嵌入式(embedding),fileNames(file_name)和content(content)。 表示輔助字段。

  1. >>嵌入和插入:.txt代碼通過
  2. 文件迭代,使用OpenAI API生成嵌入式,然後將它們插入數據庫:>
db.enable_load_extension(True)
sqlite_vec.load(db)
db.enable_load_extension(False)

db.execute('''
    CREATE VIRTUAL TABLE documents USING vec0(
        embedding float[1536],
        +file_name TEXT,
        +content TEXT
    )
''')
登入後複製
  1. rag查詢:
# ... (OpenAI embedding function) ...

for file_name in os.listdir("data"):
    # ... (Open file, get content, get embedding) ...
    db.execute(
        'INSERT INTO documents (embedding, file_name, content) VALUES (?, ?, ?)',
        (serialize_float32(embedding), file_name, content)
    )
db.commit()
登入後複製
然後將結果用作openai聊天完成的上下文來回答查詢。

>

結論

>大大簡化了抹布。 它消除了對複雜框架和雲服務的需求,使其具有成本效益且易於迭代。 雖然縮放可能最終需要一個更健壯的數據庫,但sqlite-vec>為較小的項目提供了引人注目的解決方案。 擴展名支持多種編程語言。 sqlite-vec

Retrieval Augmented Generation in SQLite

以上是在Sqlite中檢索增強發電的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板