Catatan
Tim kanopi tidak lagi mempertahankan repositori ini. Terima kasih atas dukungan dan antusiasme Anda untuk proyek ini! Jika Anda mencari solusi kain terkelola berkualitas tinggi dengan pembaruan dan perbaikan berkelanjutan, silakan periksa asisten Pinecone.
Canopy adalah kerangka kerja dan mesin konteks augmented augmented-source (RAG) dan mesin yang dibangun di atas database vektor pinecone. Kanopi memungkinkan Anda untuk bereksperimen dengan cepat dan mudah dengan dan membangun aplikasi menggunakan Rag. Mulailah mengobrol dengan dokumen atau data teks Anda dengan beberapa perintah sederhana.
Canopy mengambil pengangkatan berat untuk membangun aplikasi Rag: dari chunking dan menyematkan data teks Anda ke manajemen riwayat obrolan, optimasi kueri, pengambilan konteks (termasuk rekayasa cepat), dan generasi augmented.
Canopy menyediakan server bawaan yang dapat dikonfigurasi sehingga Anda dapat dengan mudah menggunakan aplikasi obrolan bertenaga kain ke UI atau antarmuka obrolan yang ada. Atau Anda dapat membangun aplikasi Rag Kustom Anda sendiri menggunakan perpustakaan kanopi.
Canopy memungkinkan Anda mengevaluasi alur kerja kain Anda dengan alat obrolan berbasis CLI. Dengan perintah sederhana di Canopy CLI, Anda dapat mengobrol secara interaktif dengan data teks Anda dan membandingkan RAG vs Alur Kerja Non-RAG berdampingan.
Lihatlah posting blog kami untuk mempelajari lebih lanjut, atau lihat tutorial singkat di sini.

Kanopi mengimplementasikan alur kerja kain lengkap untuk mencegah halusinasi dan menambah LLM Anda dengan data teks Anda sendiri.
Canopy memiliki dua aliran: pembuatan dan obrolan basis pengetahuan. Dalam aliran pembuatan basis pengetahuan, pengguna mengunggah dokumen mereka dan mengubahnya menjadi representasi yang bermakna yang disimpan dalam database vektor Pinecone. Dalam aliran obrolan, kueri yang masuk dan riwayat obrolan dioptimalkan untuk mengambil dokumen yang paling relevan, basis pengetahuan ditanya, dan konteks yang bermakna dihasilkan untuk dijawab oleh LLM.
ChatEngine merumuskan pertanyaan yang relevan dengan ContextEngine , kemudian menggunakan LLM untuk menghasilkan respons yang berpengetahuan luas.ContextEngine menggunakan KnowledgeBase yang mendasarinya untuk mengambil dokumen yang paling relevan, kemudian merumuskan konteks tekstual yang koheren untuk digunakan sebagai prompt untuk LLM.Informasi lebih lanjut tentang penggunaan perpustakaan inti dapat ditemukan di dokumentasi perpustakaan
Server Canopy - Ini adalah layanan web yang membungkus perpustakaan inti kanopi dan memaparkannya sebagai API REST. Server dibangun di atas Fastapi, Uvicorn dan Gunicorn dan dapat dengan mudah digunakan dalam produksi. Server juga dilengkapi dengan UI Swagger bawaan untuk pengujian dan dokumentasi yang mudah. Setelah Anda memulai server, Anda dapat mengakses UI Swagger di http://host:port/docs (default: http://localhost:8000/docs )
Canopy CLI - Alat pengembangan bawaan yang memungkinkan pengguna untuk dengan cepat mengatur server kanopi mereka sendiri dan menguji konfigurasinya.
Dengan hanya tiga perintah CLI, Anda dapat membuat server kanopi baru, unggah dokumen Anda, dan kemudian berinteraksi dengan chatbot menggunakan aplikasi obrolan bawaan langsung dari terminal. Chatbot built-in juga memungkinkan perbandingan tanggapan yang diinfuskan oleh rag terhadap chatbot LLM asli.
python3 -m venv canopy-env
source canopy-env/bin/activateInformasi lebih lanjut tentang lingkungan virtual dapat ditemukan di sini
pip install canopy-sdk| Nama | Keterangan |
|---|---|
grpc | Untuk membuka kunci beberapa peningkatan kinerja dengan bekerja dengan versi GRPC dari klien Pinecone |
torch | Untuk mengaktifkan embeddings yang disediakan oleh kalimat-kalimat |
transformers | Jika Anda menggunakan AnyScale LLMS, disarankan untuk menggunakan Tokenizer LLamaTokenizer yang membutuhkan transformator sebagai ketergantungan |
cohere | Untuk menggunakan cohere reranker atau/dan cohere llm |
qdrant | Untuk menggunakan qdrant sebagai basis pengetahuan alternatif |
export PINECONE_API_KEY= " <PINECONE_API_KEY> "
export OPENAI_API_KEY= " <OPENAI_API_KEY> "
export INDEX_NAME= " <INDEX_NAME> "| Nama | Keterangan | Bagaimana cara mendapatkannya? |
|---|---|---|
PINECONE_API_KEY | Kunci API untuk Pinecone. Digunakan untuk mengotentikasi untuk melayani Pinecone untuk membuat indeks dan untuk memasukkan, menghapus dan mencari data | Mendaftar atau masuk ke akun Pinecone Anda di konsol. Anda dapat mengakses kunci API Anda dari bagian "Kunci API" di bilah sisi dasbor Anda |
OPENAI_API_KEY | Kunci API untuk Openai. Digunakan untuk mengotentikasi untuk layanan Openai untuk penyematan dan obrolan API | Anda dapat menemukan kunci API openai Anda di sini. Anda mungkin perlu masuk atau mendaftar ke Layanan OpenAI |
INDEX_NAME | Nama kanopi indeks pinecone akan bekerja dengan yang mendasari | Anda dapat memilih nama apa pun selama itu mengikuti pembatasan Pinecone |
CANOPY_CONFIG_FILE | Jalur file konfigurasi YAML yang akan digunakan oleh server kanopi. | Opsional - Jika tidak disediakan, konfigurasi default akan digunakan |
Variabel lingkungan opsional ini digunakan untuk mengotentikasi pada layanan yang didukung lainnya untuk embeddings dan LLMS. Jika Anda mengkonfigurasi kanopi untuk menggunakan salah satu penyedia ini - Anda perlu mengatur variabel lingkungan yang relevan.
| Nama | Keterangan | Bagaimana cara mendapatkannya? |
|---|---|---|
ANYSCALE_API_KEY | Kunci API untuk AnyScale. Digunakan untuk mengotentikasi ke titik akhir apa pun untuk LLMS open source | Anda dapat mendaftarkan titik akhir apa pun dan menemukan kunci API Anda di sini |
CO_API_KEY | Kunci API untuk cohere. Digunakan untuk mengotentikasi untuk menyatukan layanan untuk penyematan | Anda dapat menemukan informasi lebih lanjut tentang mendaftar ke cohere di sini |
JINA_API_KEY | Kunci API untuk Jina AI. Digunakan untuk mengotentikasi layanan Jinaai untuk penyematan dan obrolan API | Anda dapat menemukan kunci API openai Anda di sini. Anda mungkin perlu masuk atau mendaftar ke Layanan OpenAI |
AZURE_OPENAI_ENDOINT | URL dari titik akhir Azure Openai yang Anda gunakan. | Anda dapat menemukan ini di portal Azure Openai di bawah _keys dan titik akhir |
AZURE_OPENAI_API_KEY | Kunci API untuk digunakan untuk model OpenAI Azure Anda. | Anda dapat menemukan ini di portal Azure Openai di bawah _keys dan titik akhir |
OCTOAI_API_KEY | Kunci API untuk Octoai. Digunakan untuk mengotentikasi untuk llms sumber terbuka yang dilayani di octoai | Anda dapat mendaftar untuk octoai dan menemukan kunci API Anda di sini |
canopyOutput harus mirip dengan ini:
Canopy: Ready
Usage: canopy [OPTIONS] COMMAND [ARGS]...
# rest of the help message Dalam QuickStart ini, kami akan menunjukkan kepada Anda cara menggunakan kanopi untuk membangun sistem penjawab pertanyaan sederhana menggunakan RAG (Retrieval Augmented Generation).
Sebagai pengaturan satu kali, kanopi perlu membuat indeks Pinecone baru yang dikonfigurasi untuk bekerja dengan kanopi, cukup jalankan:
canopy new Dan ikuti instruksi CLI. Indeks yang akan dibuat akan memiliki canopy--<INDEX_NAME> .
Anda hanya perlu melakukan proses ini sekali untuk setiap indeks kanopi yang ingin Anda buat.
Untuk mempelajari lebih lanjut tentang indeks Pinecone dan cara mengelolanya, silakan merujuk ke panduan berikut: Memahami Indeks
Anda dapat memuat data ke dalam indeks kanopi Anda menggunakan perintah:
canopy upsert /path/to/data_directory
# or
canopy upsert /path/to/data_directory/file.parquet
# or
canopy upsert /path/to/data_directory/file.jsonl
# or
canopy upsert /path/to/directory_of_txt_files/
# ... Canopy mendukung file dalam format jsonl , parquet dan csv . Selain itu, Anda dapat memuat file data Plaintext dalam format .txt . Dalam hal ini, setiap file akan diperlakukan sebagai satu dokumen. ID dokumen akan menjadi nama file, dan sumbernya akan menjadi jalur lengkap file.
Catatan : Bidang dokumen digunakan dalam aliran kain dan harus mematuhi skema berikut:
+----------+--------------+--------------+---------------+
| id(str) | text(str) | source | metadata |
| | | Optional[str] | Optional[dict] |
| ----------+--------------+--------------+--------------- |
| " id1 " | " some text " | " some source " | { " key " : " val " } |
+----------+--------------+--------------+---------------+
# id - unique identifier for the document
#
# text - the text of the document, in utf-8 encoding.
#
# source - the source of the document, can be any string, or null.
# ** this will be used as a reference in the generated context. **
#
# metadata - optional metadata for the document, for filtering or additional context.
# Dict[str, Union[str, int, float, List[str]]]Buku catatan ini menunjukkan bagaimana Anda membuat dataset dalam format ini, ikuti instruksi di CLI saat Anda mengunggah data Anda.
Tip
Jika Anda ingin memisahkan data Anda menjadi ruang nama, Anda dapat menggunakan opsi --namespace atau variabel lingkungan INDEX_NAMESPACE .
Server kanopi memperlihatkan fungsionalitas kanopi melalui API REST. Yaitu, memungkinkan Anda untuk mengunggah dokumen, mengambil dokumen yang relevan untuk kueri yang diberikan, dan mengobrol dengan data Anda. Server memperlihatkan /chat.completion . Untuk memulai server, jalankan:
canopy startSekarang, Anda harus diminta dengan pesan UVICORN standar berikut:
...
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
Itu saja! Anda sekarang dapat mulai menggunakan server Canopy dengan aplikasi obrolan apa pun yang mendukung /chat.completion .
Perintah mulai kanopi akan membuat terminal tetap ditempati (penggunaan yang disarankan). Jika Anda ingin menjalankan server di latar belakang, Anda dapat menggunakan perintah berikut -
nohup canopy start &
Untuk menghentikan server, cukup tekan CTRL+C di terminal tempat Anda memulainya.
Canopy's CLI dilengkapi dengan aplikasi obrolan bawaan yang memungkinkan Anda untuk mengobrol secara interaktif dengan data teks Anda dan membandingkan kain vs alur kerja non-rag berdampingan untuk mengevaluasi hasilnya
Di jendela terminal baru, atur variabel lingkungan yang diperlukan kemudian jalankan:
canopy chatIni akan membuka antarmuka obrolan di terminal Anda. Anda dapat mengajukan pertanyaan dan chatbot yang diresapi RAG akan mencoba menjawabnya menggunakan data yang Anda unggah.
Untuk membandingkan respons obrolan dengan dan tanpa kain gunakan bendera --no-rag
Catatan : Metode ini hanya didukung dengan OpenAi saat ini.
canopy chat --no-ragIni akan membuka jendela antarmuka obrolan yang serupa, tetapi akan menunjukkan respons kain dan non-RAG berdampingan.
Terima kasih telah mempertimbangkan berkontribusi pada kanopi! Silakan lihat pedoman yang berkontribusi kami untuk informasi lebih lanjut.
Jika Anda sudah memiliki aplikasi yang menggunakan API OpenAI, Anda dapat memigrasi ke kanopi dengan hanya mengubah titik akhir API ke http://host:port/v1 , misalnya dengan konfigurasi default:
from openai import OpenAI
client = OpenAI ( base_url = "http://localhost:8000/v1" )Jika Anda ingin menggunakan indeks namespace tertentu untuk mengobrol, Anda bisa menambahkan namespace ke titik akhir API:
from openai import OpenAI
client = OpenAI ( base_url = "http://localhost:8000/v1/my-namespace" ) Canopy menggunakan FASTAPI sebagai kerangka kerja web dan Uvicorn sebagai server ASGI.
Untuk menggunakan kanopi dalam produksi, disarankan untuk menggunakan gambar Docker Canopy, tersedia pada paket GitHub, untuk kebutuhan produksi Anda.
Untuk panduan tentang penyebaran kanopi di Google Cloud Platform (GCP), lihat contoh yang disediakan dalam penyebaran ke dokumentasi GCP.
Atau, Anda dapat menggunakan Gunicorn sebagai WSGI kelas produksi, lebih detail di sini.
Atur PORT yang Anda inginkan dan variabel lingkungan WORKER_COUNT , dan mulai server dengan:
gunicorn canopy_server.app:app --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0: $PORT --workers $WORKER_COUNT Penting
Server berinteraksi dengan layanan seperti Pinecone dan OpenAI menggunakan kredensial otentikasi Anda sendiri. Saat menggunakan server pada penyedia hosting web publik, disarankan untuk mengaktifkan mekanisme otentikasi, sehingga server Anda hanya akan menerima permintaan dari pengguna yang diautentikasi.