Repositori ini berisi aplikasi Python yang menggunakan DuckDB sebagai backend untuk menyimpan dan mengambil vektor embedding. Penggunaan novel DuckDB memungkinkan pencarian kesamaan yang efisien di antara set data besar. Dalam contoh ini, kami telah memuat komentar dari Hacker News dan mengimplementasikan fungsionalitas untuk menemukan 10 komentar paling mirip dengan komentar yang diberikan.
Klon Repositori:
git clone https://github.com/patricktrainer/duckdb-embedding-search.gitArahkan ke direktori repositori:
cd duckdb-embedding-searchInstal Paket yang Diperlukan:
pip install -r requirements.txtUntuk menggunakan aplikasi, ikuti langkah -langkah ini:
load_comments.py untuk memuat komentar ke dalam database DuckDB. Komentar dan vektor embedding yang sesuai akan disimpan dalam tabel embeddings dari basis data hn_embeddings.db .main.py ) dan berikan komentar berita peretas. Skrip akan mengembalikan 10 komentar paling mirip dari database.Catatan - Fungsi
get_similaritydalamembedding.pyakan membuat vektor embedding baru untuk komentar yang disediakan jika belum ada dalam database. Ini berarti bahwa itu akan mencapai API Openai, yang akan diperhitungkan melawan penggunaan API Anda.
Contoh berikut menunjukkan fungsionalitas aplikasi. Komentar disediakan sebagai input, dan aplikasi mengembalikan 10 komentar paling mirip dari database.
Komentar yang diberikan sebagai masukan:
Satu hal yang saya perhatikan adalah bahwa banyak insinyur, ketika mereka mencari perpustakaan di GitHub, mereka memeriksa waktu komit terakhir. Mereka berpikir bahwa semakin baru komit terakhir adalah, semakin baik didukung perpustakaan. Tetapi bagaimana dengan proyek yang diarsipkan yang melakukan persis apa yang Anda butuhkan untuk dilakukan, memiliki 0 bug, dan telah stabil selama bertahun -tahun? Itu seperti menemukan permata tersembunyi di toko barang bekas! Sebagian besar insinyur yang saya lihat saat ini akan secara otomatis membuang perpustakaan yang tidak "terus -menerus" diperbarui ... menyiratkan itu hal yang baik :)
Komentar paling mirip yang dikembalikan oleh aplikasi (disingkat untuk singkatnya):
Teks:> Kematian untuk perpustakaan bersama. Sakit kepala yang mereka sebabkan tidak sepadan dengan manfaatnya.
Sepenuhnya tidak setuju. Meskipun satu ukuran tidak cocok untuk semua, siapa pun yang membuat pernyataan menyapu tentang perpustakaan statis hanya menyatakan kepada dunia bagaimana mereka benar -benar tidak menyadari masalah pemeliharaan perangkat lunak dasar seperti melacak paket perangkat lunak mana yang diperbarui, khususnya mereka yang tidak diperbarui setiap hari.
Kesamaan: 0.8047998201033179
Teks: Banyak poin bagus di sini, tetapi pekerjaan pemeliharaan untuk sistem yang menguntungkan sepertinya penggunaan waktu yang valid.
Sekarang, beberapa sistem yang menguntungkan perlahan -lahan menggigit dan insinyur bertenor dapat tetap sibuk melakukan pekerjaan rutin sambil gagal mengatasi atau meningkatkan bitrot. Tapi saya pikir orang -orang yang pandai memastikan hal -hal yang membosankan dan stabil tetap membosankan dan stabil biasanya kurang dihargai.
Kesamaan: 0,796911347299464
connection.py : Menangani koneksi basis data DuckDB.embedding.py : mengelola embedding operasi vektor.operations.py : Berisi fungsi utilitas untuk pemrosesan data.openai_client.py : Antarmuka dengan API OpenAI. DuckDB digunakan sebagai basis data berkinerja tinggi dan berkinerja tinggi untuk menyimpan vektor embedding. Modul connection.py membuat koneksi ke DuckDB, dan operations.py berisi logika untuk memasukkan dan mengambil embeddings.
Vektor penyematan dihasilkan menggunakan API Openai. Modul openai_client.py berisi logika untuk berinteraksi dengan API. Modul embedding.py berisi logika untuk menghasilkan vektor embedding dan membandingkannya.