28,7 Juta Komentar Hacker News Disediakan sebagai Dataset Pencarian Vector Embedding
(clickhouse.com)- Dataset Hacker News mencakup 28,74 juta postingan dan komentar, dengan setiap teks terdiri dari vector embedding 384 dimensi yang dihasilkan oleh model SentenceTransformers all-MiniLM-L6-v2
- Data dirilis dalam bentuk satu file Parquet (bucket S3) yang disediakan oleh ClickHouse, sehingga dapat dimanfaatkan untuk perancangan dan evaluasi performa aplikasi pencarian vektor skala besar
- Contoh kode SQL menjelaskan langkah demi langkah proses pembuatan tabel, pemuatan data, pembangunan indeks kemiripan vektor berbasis HNSW, dan eksekusi kueri pencarian
- Dalam contoh Python, SentenceTransformers digunakan untuk membuat embedding kueri, lalu pencarian berbasis makna dilakukan di ClickHouse dengan fungsi cosineDistance()
- Aplikasi demo peringkasan yang menyusul memanfaatkan LangChain dan OpenAI GPT-3.5-turbo untuk merangkum postingan yang ditemukan, sekaligus menunjukkan potensi perluasan ke kasus penggunaan AI generatif untuk perusahaan
Gambaran umum dataset pencarian vektor Hacker News
- Dataset ini mencakup 28,74 juta postingan dan komentar Hacker News, dan setiap item menyertakan vector embedding 384 dimensi yang dihasilkan oleh model SentenceTransformers all-MiniLM-L6-v2
- Embedding dibuat menggunakan model embedding lokal untuk menangkap makna kalimat dan paragraf
- Dataset ini dapat digunakan untuk merancang, memperkirakan skala, dan menganalisis performa aplikasi pencarian vektor skala besar berbasis data teks buatan pengguna
Detail dataset
- Seluruh data tersedia sebagai satu file Parquet yang disediakan oleh ClickHouse, dan dapat diunduh dari bucket S3 (
https://clickhouse-datasets.s3.amazonaws.com/hackernews-miniLM/…) - Pengguna disarankan merujuk ke panduan indeks ANN di dokumentasi ClickHouse untuk memperkirakan kebutuhan penyimpanan dan memori
Prosedur pemuatan data dan pembangunan indeks
- Tabel
hackernewsdibuat agar mencakup berbagai atribut seperti ID postingan, teks, vektor, penulis, waktu, skor, dan lain-lain - Pemuatan data dilakukan dengan perintah SQL berikut
INSERT INTO hackernews SELECT * FROM s3('https://clickhouse-datasets.s3.amazonaws.com/hackernews-miniLM/…');- Penyisipan sekitar 28,74 juta baris memerlukan waktu beberapa menit
- Indeks kemiripan vektor dibuat menggunakan algoritme HNSW dan cosineDistance
ALTER TABLE hackernews ADD INDEX vector_index vector TYPE vector_similarity('hnsw', 'cosineDistance', 384, 'bf16', 64, 512); ALTER TABLE hackernews MATERIALIZE INDEX vector_index SETTINGS mutations_sync = 2;- Ditetapkan dengan
M=64,ef_construction=512, dan pembangunan indeks dapat memakan waktu dari beberapa menit hingga beberapa jam tergantung jumlah inti CPU dan bandwidth penyimpanan
- Ditetapkan dengan
- Setelah indeks selesai dibangun, kueri pencarian vektor akan otomatis memanfaatkan indeks tersebut
SELECT id, title, text FROM hackernews ORDER BY cosineDistance(vector, <search vector>) LIMIT 10- Pemuatan indeks ke memori dapat memerlukan waktu dari beberapa detik hingga beberapa menit
Contoh pencarian semantik berbasis Python
- Skrip Python membuat embedding untuk kueri masukan dengan SentenceTransformers, lalu menjalankan kueri melalui ClickHouse Connect
- Fungsi
cosineDistance()digunakan untuk menghitung kemiripan antara vektor input dan vektor dalam dataset - Dalam contoh eksekusi, kueri “Are OLAP cubes useful” menampilkan 20 postingan terkait teratas
- Hasil keluaran terdiri dari ID tiap postingan dan sebagian teksnya (100 karakter)
Aplikasi demo peringkasan
- Setelah contoh pencarian semantik dan pencarian dokumen menggunakan ClickHouse, diperkenalkan aplikasi peringkasan berbasis AI generatif
- Langkah utamanya
- Menerima topik dari pengguna
- Membuat embedding topik dengan
SentenceTransformers all-MiniLM-L6-v2 - Mengambil postingan/komentar terkait melalui pencarian kemiripan vektor di ClickHouse
- Merangkum hasil pencarian menggunakan
LangChaindan OpenAIgpt-3.5-turbo
- Dalam contoh eksekusi, pencarian dilakukan dengan topik “ClickHouse performance experiences”, lalu GPT-3.5 menghasilkan ringkasan
- Isi ringkasan menekankan performa, kesederhanaan, efisiensi, dan kecocokan untuk analitik skala besar dari ClickHouse, sambil juga menyebut beberapa kesulitan terkait DML dan backup
- Aplikasi ini dapat diperluas ke berbagai kasus penggunaan AI generatif di perusahaan seperti analisis sentimen pelanggan, otomatisasi dukungan teknis, peringkasan notulen rapat, dan analisis dokumen keuangan
Susunan kode aplikasi peringkasan
- Dalam kode Python digunakan
SentenceTransformer,clickhouse_connect,LangChain,ChatOpenAI, dan lain-lain - Hasil pencarian digabungkan lalu diberikan ke model GPT-3.5 untuk menghasilkan ringkasan maksimum 10 kalimat
- Bergantung pada jumlah token teks masukan, pemrosesan memilih rantai
stuffataumap_reduce - Hasil ditampilkan dalam format “Summary from chatgpt-3.5:”
Belum ada komentar.