
Fitur Currrent dan yang Direncanakan:
Proyek ini menggunakan Pixi untuk mengelola dependensi dan lingkungan.
Jika Anda menggunakan Linux atau MacOS, Anda dapat menginstal Pixi menggunakan perintah berikut:
curl -fsSL https://pixi.sh/install.sh | bashKemudian klon repositori:
git clone https://github.com/dnth/pgsql-search.git
cd pgsql-searchInstal proyek:
pixi installIni harus menginstal semua dependensi proyek termasuk PostgreSQL, Cuda, Pytorch, dan PGVector ke dalam lingkungan virtual.
Tip
Mengapa pixi dan bukan uv ?
Kami menggunakan database PostgreSQL dalam proyek ini dan tidak dapat diinstal secara langsung melalui uv atau pip . Tetapi PostgreSQL dapat diinstal melalui conda .
Alih -alih menggunakan conda , kami menggunakan pixi untuk mengelola lingkungan dan ketergantungan. Plus, pixi menggunakan uv di bawah kap untuk menarik paket Python. Ini memberi kita kecepatan uv untuk paket Python dan fleksibilitas conda untuk dependensi tingkat sistem.
Mulai server database lokal:
pixi run configure-db Ini menginisialisasi database dan memulai server. Anda harus melihat folder bernama mylocal_db di direktori Anda saat ini. Folder ini berisi file database.
Setelah database diatur, mari kita jalankan skrip QuickStart:
pixi run quickstartSkrip ini akan memuat dataset dengan gambar dan teks, membuat database, memasukkan dataset ke dalam database, dan menjalankan pencarian teks lengkap dan mencetak hasilnya.
Jika semuanya berjalan dengan baik, Anda harus melihat hasilnya dicetak di terminal.
Saat ini, kami hanya mendukung kumpulan data yang memeluk. Mari kita memuat dataset dengan gambar dan teks.
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 adalah objek Dataset Wajah Memeluk. Anda bebas melakukan operasi apa pun yang didukung oleh paket datasets .
ds . dataset Dataset({
features: ['image_filepath', 'caption'],
num_rows: 30504
})
Dari ds.dataset kita melihat bahwa kita memiliki 30504 baris dalam dataset dengan 2 kolom: image_filepath dan caption . Sekarang kita dapat membuat database dan memasukkan dataset ke dalam database.
from pgsql_search . database import PostgreSQLDatabase , ColumnType
PostgreSQLDatabase . create_database ( "my_database" )Masukkan dataset ke dalam 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 )Setelah selesai, kami dapat menjalankan pencarian teks lengkap pada database.
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
)Outputnya adalah DataFrame PANDAS dengan hasil dan kueri.

Jika Anda ingin memeriksa database, Anda dapat melakukannya dengan perintah berikut:
pixi run inspect-dbIni akan membuka terminal interaktif untuk memeriksa database.
Jika Anda ingin menghentikan server database, Anda dapat melakukannya dengan perintah berikut:
pixi run stop-dbDan untuk menghapus database sepenuhnya:
pixi run remove-dbpixi run -e test pytest