
彎道和計劃的功能:
該項目使用Pixi來管理依賴性和環境。
如果您在Linux或MacOS上,則可以使用以下命令安裝Pixi:
curl -fsSL https://pixi.sh/install.sh | bash然後克隆存儲庫:
git clone https://github.com/dnth/pgsql-search.git
cd pgsql-search安裝項目:
pixi install這應該將項目的所有依賴項安裝在虛擬環境中,包括PostgreSQL,CUDA,PYTORCH和PGVECTOR。
提示
為什麼pixi而不是uv ?
我們正在此項目中使用PostgreSQL數據庫,並且它無法直接通過uv或pip安裝。但是PostgreSQL可以通過conda安裝。
我們不使用conda ,而是使用pixi來管理環境和依賴關係。另外, pixi在引擎蓋下使用uv來拉動Python包裝。這為我們提供了Python軟件包的uv速度,以及系統級依賴性的conda的靈活性。
啟動本地數據庫服務器:
pixi run configure-db這樣可以初始化數據庫並啟動服務器。您應該在當前目錄中看到一個名為mylocal_db的文件夾。此文件夾包含數據庫文件。
設置數據庫後,讓我們運行快速啟動腳本:
pixi run quickstart該腳本將加載一個帶有圖像和字幕的數據集,創建數據庫,將數據集插入數據庫,並運行全文搜索並打印結果。
如果一切順利,您應該看到在終端中打印的結果。
目前,我們僅支持擁抱面部數據集。讓我們加載一個帶有圖像和字幕的數據集。
from pgsql_search . loader import HuggingFaceDatasets
ds = HuggingFaceDatasets ( "UCSC-VLAA/Recap-COCO-30K" ) # Load the dataset
ds . save_images ( "../data/images" ) # Save the images to a local folder
ds = ds . select_columns ([ "image_filepath" , "caption" ]) # Select the columns we want to use ds.dataset是一個擁抱的面部Dataset對象。您可以自由執行datasets集軟件包支持的任何操作。
ds . dataset Dataset({
features: ['image_filepath', 'caption'],
num_rows: 30504
})
從ds.dataset中,我們可以看到數據集中有30504行,帶有2列: image_filepath和caption 。現在,我們可以創建一個數據庫並將數據集插入數據庫中。
from pgsql_search . database import PostgreSQLDatabase , ColumnType
PostgreSQLDatabase . create_database ( "my_database" )將數據集插入數據庫:
df = ds . dataset . to_pandas ()
with PostgreSQLDatabase ( "my_database" ) as db :
db . initialize_table ( "image_metadata" )
db . add_column ( "image_filepath" , ColumnType . TEXT , nullable = False )
db . add_column ( "caption" , ColumnType . TEXT , nullable = True )
db . insert_dataframe ( df )完成後,我們可以在數據庫上運行全文搜索。
from pgsql_search . database import PostgreSQLDatabase
query = "man in a yellow shirt"
with PostgreSQLDatabase ( "my_database" ) as db :
res = db . full_text_search (
query = query ,
table_name = "image_metadata" ,
search_column = "caption" ,
num_results = 10
)輸出是帶有結果和查詢的熊貓數據框架。

如果您想檢查數據庫,則可以使用以下命令進行操作:
pixi run inspect-db這將打開一個交互式終端來檢查數據庫。
如果要停止數據庫服務器,則可以使用以下命令進行操作:
pixi run stop-db並完全刪除數據庫:
pixi run remove-dbpixi run -e test pytest