
カレントと計画された機能:
このプロジェクトでは、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を含むプロジェクトのすべての依存関係を仮想環境にインストールする必要があります。
ヒント
なぜuvではなくpixi ?
このプロジェクトではPostgreSQLデータベースを使用していますが、 uvまたはpipを介して直接インストールできません。ただし、PostgreSQLはcondaを介してインストールできます。
condaを使用する代わりに、 pixiを使用して環境と依存関係を管理します。さらに、 pixiフードの下でuvを使用してPythonパッケージを引きます。これにより、Pythonパッケージのuvの速度と、システムレベルの依存関係に対するcondaの柔軟性が得られます。
ローカルデータベースサーバーを開始します。
pixi run configure-dbこれにより、データベースが初期化され、サーバーが起動します。現在のディレクトリにmylocal_dbという名前のフォルダーが表示されます。このフォルダーには、データベースファイルが含まれています。
データベースがセットアップされたら、QuickStartスクリプトを実行しましょう。
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から、2つの列のあるデータセットに30504行があることがわかります: 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
)出力は、結果とクエリを備えたPandasデータフレームです。

データベースを検査したい場合は、次のコマンドでこれを行うことができます。
pixi run inspect-dbこれにより、データベースを検査するインタラクティブ端末が開きます。
データベースサーバーを停止したい場合は、次のコマンドでこれを行うことができます。
pixi run stop-dbそして、データベースを完全に削除するには:
pixi run remove-dbpixi run -e test pytest