BACA INI DALAM BAHASA INGGRIS
LangChain-Chatchat (sebelumnya Langchain-ChatGLM)
Berdasarkan model bahasa besar seperti ChatGLM dan kerangka aplikasi seperti Langchain, ini adalah proyek aplikasi RAG dan Agen sumber terbuka yang dapat diterapkan secara offline.
Ringkasan
Pengenalan fungsi
Ikhtisar fitur 0.3.x
Kerangka kerja dan model inferensi model yang didukung
Mulailah dengan cepat
instalasi dan penerapan pip
Instalasi kode sumber dan penerapan/penerapan pengembangan
Penerapan buruh pelabuhan
Tonggak Pencapaian Proyek
Hubungi kami
?️ Aplikasi tanya jawab berdasarkan basis pengetahuan lokal yang diimplementasikan menggunakan ide langchain. Tujuannya adalah untuk membangun solusi tanya jawab basis pengetahuan yang sesuai dengan skenario Tiongkok dan model sumber terbuka serta dapat dijalankan secara offline.
? Terinspirasi oleh proyek document.ai GanymedeNil dan Permintaan Tarik ChatGLM-6B yang dibuat oleh Alex Zhangji, aplikasi Tanya Jawab basis pengetahuan lokal yang dapat diimplementasikan menggunakan model sumber terbuka di seluruh proses telah dibuat. Dalam versi terbaru proyek ini, kerangka kerja seperti Xinference dan Ollama dapat digunakan untuk mengakses model seperti GLM-4-Chat, Qwen2-Instruct, Llama3, dll., mengandalkan kerangka langchain untuk mendukung layanan panggilan melalui API yang disediakan berdasarkan di FastAPI, atau menggunakan WebUI berbasis Streamlit.
✅ Proyek ini mendukung LLM sumber terbuka arus utama, Menanamkan model dan basis data vektor di pasar, dan dapat mewujudkan penerapan pribadi offline dari semua model sumber terbuka. Pada saat yang sama, proyek ini juga mendukung panggilan OpenAI GPT API, dan akan terus memperluas akses ke berbagai model dan model API di masa depan.
⛓️ Prinsip implementasi proyek ini ditunjukkan pada gambar di bawah ini. Prosesnya meliputi memuat file -> membaca teks -> segmentasi teks -> vektorisasi teks -> vektorisasi pertanyaan -> mencocokkan top k
dalam vektor teks yang paling mirip dengan yang paling mirip dengan vektor teks. vektor pertanyaan top k
-> Teks yang cocok ditambahkan ke prompt
sebagai konteks dan pertanyaan -> Dikirim ke LLM
untuk menghasilkan jawaban.
? Video pengenalan prinsip
Dari segi pemrosesan dokumen, proses implementasinya adalah sebagai berikut:
? Proyek ini tidak melibatkan proses penyempurnaan atau pelatihan, namun penyempurnaan atau pelatihan dapat digunakan untuk mengoptimalkan efek proyek ini.
? Kode yang digunakan dalam gambar AutoDL versi 0.3.0
telah diperbarui ke versi v0.3.0
proyek ini.
? Gambar Docker akan diperbarui dalam waktu dekat.
?? Jika Anda ingin berkontribusi pada proyek ini, silakan kunjungi panduan pengembangan untuk mendapatkan informasi lebih lanjut tentang pengembangan dan penerapan.
Fungsi | 0.2.x | 0,3.x |
---|---|---|
Akses model | Lokal: obrolan cepat Daring: XXXModelWorker | Lokal: model_provider, mendukung sebagian besar kerangka pemuatan model utama Online: oneapi Semua akses model kompatibel dengan openai SDK |
Agen | ❌Tidak stabil | ✅Dioptimalkan untuk ChatGLM3 dan Qwen, kemampuan Agen ditingkatkan secara signifikan |
percakapan LLM | ✅ | ✅ |
Percakapan basis pengetahuan | ✅ | ✅ |
percakapan mesin pencari | ✅ | ✅ |
percakapan berkas | ✅Pengambilan vektor saja | ✅Disatukan ke dalam fungsi File RAG, mendukung berbagai metode pencarian seperti BM25+KNN |
Dialog basis data | ❌ | ✅ |
Dialog gambar multimodal | ❌ | ✅ Disarankan menggunakan qwen-vl-chat |
Dialog Sastra ARXIV | ❌ | ✅ |
Percakapan Wolfram | ❌ | ✅ |
Gambar Vinsensian | ❌ | ✅ |
Pengelolaan basis pengetahuan lokal | ✅ | ✅ |
WEBUI | ✅ | ✅Dukungan multi-sesi yang lebih baik, kata-kata cepat sistem yang disesuaikan... |
Fungsi inti versi 0.3.x diimplementasikan oleh Agen, namun pengguna juga dapat mengimplementasikan panggilan alat secara manual:
Modus operasi | Fungsi yang diterapkan | Skenario yang berlaku |
---|---|---|
Centang "Aktifkan Agen" dan pilih beberapa alat | Panggilan alat otomatis oleh LLM | Gunakan model dengan kemampuan Agen seperti ChatGLM3/Qwen atau API online |
Centang "Aktifkan Agen" dan pilih satu alat | LLM hanya mem-parsing parameter alat | Agen model yang digunakan memiliki kemampuan rata-rata dan tidak dapat memilih alat dengan baik. Saya ingin memilih fungsi secara manual. |
Hapus centang "Aktifkan Agen" dan pilih satu alat | Tanpa menggunakan fungsi Agen, isi parameter secara manual untuk memanggil alat tersebut. | Model yang digunakan tidak memiliki kemampuan agen |
Hapus centang alat apa pun dan unggah gambar | Percakapan gambar | Gunakan model multimodal seperti qwen-vl-chat |
Untuk fitur dan pembaruan lainnya, silakan rasakan penerapan sebenarnya.
Proyek ini sudah mendukung model bahasa besar open source terbaru dan model Penyematan yang umum di pasar, seperti GLM-4-Chat dan Qwen2-Instruct. Model ini mengharuskan pengguna untuk memulai sendiri kerangka penerapan model dan mengakses proyek dengan memodifikasi informasi konfigurasi. Proyek ini Kerangka kerja penerapan model lokal yang didukung adalah sebagai berikut:
Kerangka penerapan model | Xinferensi | AI Lokal | Ollama | Obrolan Cepat |
---|---|---|---|---|
Penyelarasan antarmuka OpenAI API | ✅ | ✅ | ✅ | ✅ |
Mempercepat mesin inferensi | GPTQ, GGML, vLLM, TensorRT, mlx | GPTQ, GGML, vLLM, TensorRT | GGUF, GGML | vLLM |
Jenis model akses | LLM, Penyematan, Pemeringkatan Ulang, Teks-ke-Gambar, Visi, Audio | LLM, Penyematan, Pemeringkatan Ulang, Teks-ke-Gambar, Visi, Audio | LLM, Teks-ke-Gambar, Visi | LLM, Visi |
Panggilan Fungsi | ✅ | ✅ | ✅ | / |
Lebih banyak dukungan platform (CPU, Logam) | ✅ | ✅ | ✅ | ✅ |
Heterogen | ✅ | ✅ | / | / |
gugus | ✅ | ✅ | / | / |
Tautan dokumen operasional | Dokumentasi | Dokumentasi LocalAI | Dokumentasi Ollama | Dokumentasi FastChat |
Model yang tersedia | Xinference sudah mendukung model | LocalAI sudah mendukung model | Ollama sudah mendukung model | FastChat sudah mendukung model |
Selain kerangka pemuatan model lokal yang disebutkan di atas, proyek ini juga menyediakan dukungan untuk akses kerangka One API ke API online, termasuk OpenAI ChatGPT, Azure OpenAI API, Anthropic Claude, Zhipu Qingyan, Baichuan dan API online lain yang umum digunakan menggunakan.
Catatan
Tentang Xinference memuat model lokal: Model bawaan Xinference akan diunduh secara otomatis. Jika Anda ingin memuat model yang diunduh secara lokal, Anda dapat menjalankan streamlit run xinference_manager.py
di direktori alat/model_loaders proyek setelah memulai layanan Xinference petunjuk halaman: Cukup tentukan model untuk mengatur jalur lokal.
? Dari segi perangkat lunak, proyek ini telah mendukung penggunaan di lingkungan Python 3.8-3.11 dan telah diuji di sistem operasi Windows, macOS, dan Linux.
? Dalam hal perangkat keras, karena versi 0.3.0 telah dimodifikasi untuk mendukung akses ke kerangka penerapan model yang berbeda, versi ini dapat digunakan dalam kondisi perangkat keras yang berbeda seperti CPU, GPU, NPU, MPS, dll.
Mulai versi 0.3.0, Langchain-Chachat menyediakan metode instalasi berupa pustaka Python. Untuk instalasi khusus, silakan jalankan:
pip instal langchain-chatchat -U
Penting
Untuk memastikan perpustakaan Python yang digunakan adalah versi terbaru, disarankan untuk menggunakan sumber resmi Pypi atau sumber Tsinghua.
Catatan
Karena kerangka penerapan model Xinference perlu menginstal pustaka ketergantungan Python yang sesuai saat menghubungkan ke Langchain-Chachat, disarankan untuk menggunakan metode instalasi berikut saat menggunakannya dengan kerangka Xinference:
pip install "langchain-chatchat[xinference]" -U
Mulai dari versi 0.3.0, Langchain-Chatchat tidak lagi memuat model secara langsung berdasarkan masukan jalur model lokal oleh pengguna. Jenis model yang terlibat meliputi model LLM, Embedding, Reranker, dan multi-modal yang akan didukung di masa mendatang. dll., telah diubah menjadi Mendukung akses ke kerangka inferensi model utama yang umum tersedia di pasar, seperti Xinference, Ollama, LocalAI, FastChat, One API, dll.
Oleh karena itu, pastikan bahwa sebelum memulai proyek Langchain-Chachat, jalankan kerangka inferensi model terlebih dahulu dan muat model yang diperlukan.
Di sini kita mengambil Xinference sebagai contoh. Silakan merujuk ke dokumentasi Xinference untuk penerapan kerangka kerja dan pemuatan model.
Peringatan
Untuk menghindari konflik ketergantungan, harap letakkan Langchain-Chachat dan kerangka penerapan model seperti Xinference di lingkungan virtual Python yang berbeda, seperti conda, venv, virtualenv, dll.
Mulai dari versi 0.3.1, Langchain-Chachat menggunakan file yaml
lokal untuk konfigurasi. Pengguna dapat langsung melihat dan mengubah konten, dan server akan diperbarui secara otomatis tanpa memulai ulang.
Tetapkan direktori root tempat Chatchat menyimpan file konfigurasi dan file data (opsional)
# di linux atau macosexport CHATCHAT_ROOT=/path/to/chatchat_data # di windowsset CHATCHAT_ROOT=/path/to/chatchat_data
Jika variabel lingkungan ini tidak disetel, direktori saat ini akan digunakan secara otomatis.
Lakukan inisialisasi
obrolan inisiasi
Perintah ini melakukan hal berikut:
Buat semua direktori data yang diperlukan
Salin contoh konten basis pengetahuan
Hasilkan file konfigurasi yaml
default
Ubah file konfigurasi
Konfigurasikan model (model_settings.yaml)
Anda perlu melakukan konfigurasi akses model sesuai dengan kerangka inferensi model_settings.yaml
yang dipilih pada langkah 2. Kerangka inferensi model dan memuat model serta model yang dimuat. Terutama memodifikasi konten berikut:
# Nama LLM default DEFAULT_LLM_MODEL: qwen1.5-chat # Nama bawaan bawaan DEFAULT_EMBEDDING_MODEL: bge-large-zh-v1.5 # Ubah kunci `llm_model, action_model` di `LLM_MODEL_CONFIG` ke model LLM yang sesuai# ada Ubah informasi platform model yang sesuai di `MODEL_PLATFORMS`
Konfigurasikan jalur basis pengetahuan (basic_settings.yaml) (opsional)
Basis pengetahuan default terletak di CHATCHAT_ROOT/data/knowledge_base
. Jika Anda ingin menempatkan basis pengetahuan di lokasi berbeda, atau ingin menyambung ke basis pengetahuan yang sudah ada, Anda dapat mengubah direktori terkait di sini.
# Jalur penyimpanan default basis pengetahuan KB_ROOT_PATH: D:chatchat-testdataknowledge_base # Jalur penyimpanan default database. Jika Anda menggunakan sqlite, Anda dapat memodifikasi DB_ROOT_PATH secara langsung; jika Anda menggunakan database lain, silakan langsung memodifikasi SQLALCHEMY_DATABASE_URI. DB_ROOT_PATH: D:chatchat-testdataknowledge_baseinfo.db # Koneksi database informasi basis pengetahuan URI SQLALCHEMY_DATABASE_URI: sqlite:///D:chatchat-testdataknowledge_baseinfo.db
Konfigurasikan basis pengetahuan (kb_settings.yaml) (opsional)
Basis pengetahuan FAISS
digunakan secara default. Jika Anda ingin terhubung ke jenis basis pengetahuan lainnya, Anda dapat memodifikasi DEFAULT_VS_TYPE
dan kbs_config
.
Peringatan
Sebelum menginisialisasi basis pengetahuan, pastikan bahwa kerangka inferensi model dan model embedding
yang sesuai telah dimulai, dan konfigurasi akses model telah diselesaikan sesuai dengan langkah 3 di atas.
obrolan obrolan kb -r
Untuk fungsi lainnya, lihat chatchat kb --help
Log berikut muncul yang menunjukkan keberhasilan:
----------------------------------------------------------------------------------------------------
知识库名称 :samples
知识库类型 :faiss
向量模型: :bge-large-zh-v1.5
知识库路径 :/root/anaconda3/envs/chatchat/lib/python3.11/site-packages/chatchat/data/knowledge_base/samples
文件总数量 :47
入库文件数 :42
知识条目数 :740
用时 :0:02:29.701002
----------------------------------------------------------------------------------------------------
总计用时 :0:02:33.414425
Catatan
Pertanyaan yang Sering Diajukan tentang Inisialisasi Basis Pengetahuan
Masalah ini sering terjadi di lingkungan virtual yang baru dibuat dan dapat dikonfirmasi dengan:
from unstructured.partition.auto import partition
Jika pernyataan macet dan tidak dapat dijalankan, Anda dapat menjalankan perintah berikut:
pip uninstall python-magic-bin# periksa versi paket yang dihapus pip install 'python-magic-bin=={version}'
Kemudian ikuti petunjuk di bagian ini untuk membuat ulang basis pengetahuan.
obrolan mulai -a
Ketika antarmuka berikut muncul, startup berhasil:
Peringatan
Karena alamat mendengarkan default DEFAULT_BIND_HOST
yang dikonfigurasi oleh chatchat adalah 127.0.0.1, alamat tersebut tidak dapat diakses melalui IP lain.
Jika Anda perlu mengakses melalui IP mesin (seperti sistem Linux), Anda perlu mengubah alamat pendengaran menjadi 0.0.0.0 di basic_settings.yaml
.
Untuk konfigurasi percakapan database, silakan buka di sini untuk petunjuk konfigurasi percakapan database.
Silakan merujuk ke panduan pengembangan untuk instalasi dan penerapan kode sumber.
buruh pelabuhan menarik gambar obrolan/obrolan:0.3.1.3-93e2c87-20240829 docker pull ccr.ccs.tencentyun.com/langchain-chatchat/chatchat:0.3.1.3-93e2c87-20240829 #cermin domestik
Penting
Sangat disarankan: Gunakan docker-compose untuk penerapan, silakan merujuk ke README_docker untuk detailnya
Struktur 0.3.x telah banyak berubah, dan sangat disarankan agar Anda menerapkan ulang sesuai dengan dokumentasi. Panduan berikut tidak menjamin kompatibilitas dan kesuksesan 100%. Ingatlah untuk membuat cadangan data penting terlebih dahulu!
Pertama-tama ikuti langkah-langkah dalam安装部署
untuk mengonfigurasi lingkungan operasi dan memodifikasi file konfigurasi.
Salin direktori Knowledge_base proyek 0.2.x ke direktori DATA
yang dikonfigurasi
2023年4月
: Langchain-ChatGLM 0.1.0
dirilis, mendukung tanya jawab basis pengetahuan lokal berdasarkan model ChatGLM-6B.
2023年8月
: Langchain-ChatGLM
berganti nama menjadi Langchain-Chatchat
, versi 0.2.0
dirilis, menggunakan fastchat
sebagai solusi pemuatan model, mendukung lebih banyak model dan database.
2023年10月
: Langchain-Chatchat 0.2.5
dirilis, meluncurkan konten Agen, dan proyek sumber terbuka memenangkan hadiah ketiga dalam hackathon yang diadakan oleh Founder Park & Zhipu AI & Zilliz
.
2023年12月
: Proyek sumber terbuka Langchain-Chatchat
menerima lebih dari 20 ribu bintang.
2024年6月
: Langchain-Chatchat 0.3.0
dirilis, menghadirkan struktur proyek baru.
?Mari kita nantikan kisah Chatchat selanjutnya...
Kode proyek ini mengikuti protokol Apache-2.0.
? Grup komunikasi WeChat proyek Langchain-Chachat. Jika Anda juga tertarik dengan proyek ini, Anda dapat bergabung dengan obrolan grup untuk berpartisipasi dalam diskusi dan pertukaran.
? Akun publik resmi proyek Langchain-Chachat, selamat datang untuk memindai kode QR untuk mengikuti.
Jika proyek ini bermanfaat bagi penelitian Anda, harap kutip kami:
@software{langchain_chatchat, title = {{langchain-chatchat}}, author = {Liu, Qian and Song, Jinke, and Huang, Zhiguo, and Zhang, Yuxuan, and glide-the, and liunux4odoo}, year = 2024, journal = {GitHub repository}, publisher = {GitHub}, howpublished = {url{https://github.com/chatchat-space/Langchain-Chatchat}} }