
คุณสมบัติของ Currrent และตามแผน:
โครงการนี้ใช้ 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 สิ่งนี้ทำให้เรามีความเร็วของ uv สำหรับแพ็คเกจ Python และความยืดหยุ่นของ conda สำหรับการพึ่งพาระดับระบบ
เริ่มเซิร์ฟเวอร์ฐานข้อมูลท้องถิ่น:
pixi run configure-db สิ่งนี้เริ่มต้นฐานข้อมูลและเริ่มเซิร์ฟเวอร์ คุณควรเห็นโฟลเดอร์ชื่อ mylocal_db ในไดเรกทอรีปัจจุบันของคุณ โฟลเดอร์นี้มีไฟล์ฐานข้อมูล
เมื่อตั้งฐานข้อมูลแล้วลองเรียกใช้สคริปต์ QuickStart:
pixi run quickstartสคริปต์นี้จะโหลดชุดข้อมูลด้วยรูปภาพและคำอธิบายภาพสร้างฐานข้อมูลแทรกชุดข้อมูลลงในฐานข้อมูลและเรียกใช้การค้นหาข้อความแบบเต็มและพิมพ์ผลลัพธ์
หากทุกอย่างเป็นไปด้วยดีคุณควรเห็นผลลัพธ์ที่พิมพ์ในเทอร์มินัล
ปัจจุบันเราสนับสนุนชุดข้อมูล Hugging Face เท่านั้น มาโหลดชุดข้อมูลด้วยรูปภาพและคำอธิบายภาพกันเถอะ
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
)เอาต์พุตเป็น dataframe pandas พร้อมผลลัพธ์และการสืบค้น

หากคุณต้องการตรวจสอบฐานข้อมูลคุณสามารถทำได้ด้วยคำสั่งต่อไปนี้:
pixi run inspect-dbสิ่งนี้จะเปิดเทอร์มินัลแบบโต้ตอบเพื่อตรวจสอบฐานข้อมูล
หากคุณต้องการหยุดเซิร์ฟเวอร์ฐานข้อมูลคุณสามารถทำได้ด้วยคำสั่งต่อไปนี้:
pixi run stop-dbและเพื่อลบฐานข้อมูลทั้งหมด:
pixi run remove-dbpixi run -e test pytest