CLI bertenaga openai untuk membangun indeks pencarian semantik dari file MDX Anda. Ini memungkinkan Anda untuk melakukan pencarian kompleks di seluruh konten Anda dan mengintegrasikannya dengan platform Anda.
Proyek ini menggunakan OpenAi untuk menghasilkan embeddings vektor dan pinecone untuk meng -host embeddings, yang berarti Anda perlu memiliki akun di openai dan pinecone untuk menggunakannya.
Setelah membuat akun di Pinecone, buka dasbor dan klik tombol Create Index :

Isi formulir dengan nama indeks baru Anda (misalnya nama blog Anda) dan atur jumlah dimensi ke 1536:

Pinecone


Openai

CLI membutuhkan empat kunci env:
OPENAI_API_KEY=
PINECONE_API_KEY=
PINECONE_BASE_URL=
PINECONE_NAMESPACE=Pastikan untuk menambahkannya sebelum menggunakannya!
index <dir> - Memproses file dengan konten Anda dan mengunggahnya ke Pinecone.
Contoh:
$ @beerose/semantic-search index ./posts search <query> - Melakukan pencarian semantik dengan kueri yang diberikan.
Contoh:
$ @beerose/semantic-search search " hello world " Untuk info lebih lanjut, jalankan perintah apa pun dengan bendera --help :
$ @beerose/semantic-search index --help
$ @beerose/semantic-search search --help
$ @beerose/semantic-search --help Anda dapat menggunakan fungsi semanticQuery yang diekspor dari perpustakaan ini dan mengintegrasikannya dengan situs web atau aplikasi Anda.
Instal Deps:
$ pnpm add pinecone-client openai @beerose/semantic-search
# or `yarn add` or `npm i`Contoh Penggunaan:
import { PineconeMetadata , semanticQuery } from "@beerose/semantic-search" ;
import { Configuration , OpenAIApi } from "openai" ;
import { PineconeClient } from "pinecone-client" ;
const openai = new OpenAIApi (
new Configuration ( {
apiKey : process . env . OPENAI_API_KEY ,
} )
) ;
const pinecone = new PineconeClient < PineconeMetadata > ( {
apiKey : process . env . PINECONE_API_KEY ,
baseUrl : process . env . PINECONE_BASE_URL ,
namespace : process . env . PINECONE_NAMESPACE ,
} ) ;
const result = await semanticQuery ( "hello world" , openai , pinecone ) ;Berikut adalah contoh rute API dari aleksandra.codes: https://github.com/beerose/aleksandra.codes/blob/main/api/search.ts
Pencarian semantik dapat memahami arti kata -kata dalam dokumen dan hasil pengembalian yang lebih relevan dengan maksud pengguna.
Alat ini menggunakan OpenAi untuk menghasilkan embeddings vektor dengan model text-embedding-ada-002 .
Embeddings adalah representasi numerik dari konsep yang dikonversi menjadi urutan angka, yang memudahkan komputer untuk memahami hubungan antara konsep -konsep tersebut. https://openai.com/blog/new-and-improved-embedding-model/
Ini juga menggunakan Pinecone - database yang di -host untuk pencarian vektor. Ini memungkinkan kami melakukan pencarian K-NN di seluruh embeddings yang dihasilkan.
Perintah CLI @beerose/sematic-search index melakukan langkah-langkah berikut untuk setiap file dalam direktori yang diberikan:
Bergantung pada konten Anda, seluruh proses membutuhkan banyak panggilan untuk OpenAi dan Pinecone, yang bisa memakan waktu. Misalnya, dibutuhkan sekitar tiga puluh menit untuk direktori dengan ~ 25 posting blog dan rata -rata 6 menit waktu membaca.
Untuk menguji pencarian semantik, Anda dapat menggunakan perintah CLI @beerose/sematic-search search , yang:

.
├── bin
│ └── cli.js
├── src
│ ├── bin
│ │ └── cli.ts
│ ├── commands
│ │ ├── indexFiles.ts
│ │ └── search.ts
│ ├── getEmbeddings.ts
│ ├── isRateLimitExceeded.ts
│ ├── mdxToPlainText.test.ts
│ ├── mdxToPlainText.ts
│ ├── semanticQuery.ts
│ ├── splitIntoChunks.test.ts
│ ├── splitIntoChunks.ts
│ ├── titleCase.ts
│ └── types.ts
├── tsconfig.build.json
├── tsconfig.json
├── package.json
└── pnpm-lock.yamlbin/cli.js - titik masuk CLI.src :bin/cli.ts - File di mana Anda dapat menemukan perintah dan pengaturan CLI. Proyek ini menggunakan CAC untuk membangun CLIS.commands/indexFiles.ts - Perintah CLI yang menangani pemrosesan konten MD/MDX, menghasilkan embeddings dan mengunggah vektor untuk melakukan pinecone.command/search.ts - Perintah pencarian semantik. Ini menghasilkan embedding untuk permintaan pencarian yang diberikan dan kemudian memanggil Pinecone untuk hasilnya.getEmbeddings.ts - menghasilkan logika embeddings. Ini menangani panggilan untuk membuka AI.isRateLimitExceeded.ts - Penanganan Penanganan Kesalahan.mdxToPlainText.ts - Mengonversi file mdx menjadi teks mentah. Menggunakan Komentar dan Plugin remarkMdxToPlainText khusus (juga ditentukan dalam file itu).semanticQuery.ts - Logika inti untuk melakukan pencarian semantik. Ini digunakan dalam perintah search , dan juga diekspor dari perpustakaan ini sehingga Anda dapat mengintegrasikannya dengan proyek Anda.splitIntoChunks.ts - membagi teks menjadi potongan -potongan dengan maksimum 100 token.titleCase.ts - mengekstrak judul dari jalur file.types.ts - Jenis dan utilitas yang digunakan dalam proyek ini.tsconfig.json - Konfigurasi Kompiler TypeScript.tsconfig.build.json - Konfigurasi kompiler TypeScript digunakan untuk pnpm build .Tes:
src/mdxToPlainText.test.tssrc/splitIntoChunks.test.tsInstal Deps dan Bangun Proyek:
pnpm i
pnpm buildJalankan CLI secara lokal:
node bin/cli.jspnpm test Kontribusi, masalah, dan permintaan fitur dipersilakan.
Jangan ragu untuk memeriksa halaman masalah jika Anda ingin berkontribusi.
Hak Cipta © 2023 Aleksandra Sikora.
Proyek ini berlisensi MIT.