Dengan sedikit kode dan beberapa pustaka yang berguna, Anda dapat membuat alat analisis dokumen yang canggih ini.
Mengekstraksi wawasan dari dokumen dan data sangat penting dalam membuat keputusan yang tepat. Namun, masalah privasi muncul ketika berhadapan dengan informasi sensitif. LangChain, dikombinasikan dengan OpenAI API, memungkinkan Anda menganalisis dokumen lokal Anda tanpa perlu mengunggahnya secara online.
Mereka mencapai hal ini dengan menyimpan data Anda secara lokal, menggunakan penyematan dan vektorisasi untuk analisis, dan menjalankan proses dalam lingkungan Anda. OpenAI tidak menggunakan data yang dikirimkan oleh pelanggan melalui API mereka untuk melatih model atau meningkatkan layanan mereka.
Menyiapkan Lingkungan Anda
Buat lingkungan virtual Python baru. Ini akan memastikan tidak ada konflik versi perpustakaan. Kemudian jalankan perintah terminal berikut untuk menginstal perpustakaan yang diperlukan.
pip install langchain openai tiktoken faiss-cpu pypdf
Berikut adalah rincian bagaimana Anda akan menggunakan setiap perpustakaan:
- LangChain: Anda akan menggunakannya untuk membuat dan mengelola rantai linguistik untuk pemrosesan dan analisis teks. Ini akan menyediakan modul untuk memuat dokumen, pemisahan teks, penyematan, dan penyimpanan vektor.
- OpenAI: Anda akan menggunakannya untuk menjalankan kueri dan mendapatkan hasil dari model bahasa.
- tiktoken: Anda akan menggunakannya untuk menghitung jumlah token (satuan teks) dalam teks tertentu. Ini untuk melacak jumlah token saat berinteraksi dengan OpenAI API yang mengenakan biaya berdasarkan jumlah token yang Anda gunakan.
- FAISS: Anda akan menggunakannya untuk membuat dan mengelola penyimpanan vektor, memungkinkan pengambilan cepat vektor serupa berdasarkan penyematannya.
- PyPDF: Perpustakaan ini mengekstrak teks dari PDF. Ini membantu memuat file PDF dan mengekstrak teksnya untuk diproses lebih lanjut.
Setelah semua perpustakaan terinstal, lingkungan Anda sekarang siap.
Mendapatkan Kunci API OpenAI
Saat Anda membuat permintaan ke OpenAI API, Anda perlu menyertakan kunci API sebagai bagian dari permintaan tersebut. Kunci ini memungkinkan penyedia API memverifikasi bahwa permintaan berasal dari sumber yang sah dan Anda memiliki izin yang diperlukan untuk mengakses fitur-fiturnya.
Untuk mendapatkan kunci API OpenAI, lanjutkan ke platform OpenAI.
Kemudian, di bawah profil akun Anda di kanan atas, klik Lihat kunci API. Itu Kunci API halaman akan muncul.
Klik pada Buat rahasia barukunci tombol. Beri nama kunci Anda dan klik Buat kunci rahasia baru. OpenAI akan menghasilkan kunci API yang harus Anda salin dan simpan di tempat yang aman. Demi alasan keamanan, Anda tidak akan dapat melihatnya lagi melalui akun OpenAI Anda. Jika Anda kehilangan kunci rahasia ini, Anda harus membuat yang baru.
Kode sumber lengkap tersedia di a Repositori GitHub.
Mengimpor Perpustakaan yang Diperlukan
Untuk dapat menggunakan perpustakaan yang diinstal di lingkungan virtual Anda, Anda perlu mengimpornya.
from langchain.document_loaders import PyPDFLoader, TextLoader
from langchain.text_splitter import CharacterTextSplitter
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.vectorstores import FAISS
from langchain.chains import RetrievalQA
from langchain.llms import OpenAI
Perhatikan bahwa Anda mengimpor perpustakaan ketergantungan dari LangChain. Ini memungkinkan Anda untuk menggunakan fitur spesifik kerangka LangChain.
Memuat Dokumen untuk Analisis
Mulailah dengan membuat variabel yang menyimpan kunci API Anda. Anda akan menggunakan variabel ini nanti dalam kode untuk otentikasi.
# Hardcoded API key
openai_api_key = "Your API key"
Tidak disarankan untuk melakukan hardcode pada kunci API Anda jika Anda berencana membagikan kode Anda dengan pihak ketiga. Untuk kode produksi yang ingin Anda distribusikan, gunakan variabel lingkungan sebagai gantinya.
Selanjutnya, buat fungsi yang memuat dokumen. Fungsi ini harus memuat PDF atau file teks. Jika dokumen tersebut bukan keduanya, fungsi tersebut harus memunculkan a NilaiKesalahan.
defload_document(filename):
if filename.endswith(".pdf"):
loader = PyPDFLoader(filename)
documents = loader.load()
elif filename.endswith(".txt"):
loader = TextLoader(filename)
documents = loader.load()
else:
raise ValueError("Invalid file type")
Setelah memuat dokumen, buat a Pemisah Teks Karakter. Pemisah ini akan membagi dokumen yang dimuat menjadi potongan-potongan kecil berdasarkan karakter.
text_splitter = CharacterTextSplitter(chunk_size=1000,
chunk_overlap=30, separator="\n")return text_splitter.split_documents(documents=documents)
Memisahkan dokumen memastikan bahwa potongan-potongan tersebut memiliki ukuran yang dapat dikelola dan masih terhubung dengan beberapa konteks yang tumpang tindih. Ini berguna untuk tugas-tugas seperti analisis teks dan pengambilan informasi.
Menanyakan Dokumen
Anda memerlukan cara untuk menanyakan dokumen yang diunggah untuk mendapatkan wawasan darinya. Untuk melakukannya, buatlah fungsi yang memerlukan a pertanyaan tali dan a mengambil sebagai masukan. Ini kemudian menciptakan a PengambilanQA misalnya menggunakan mengambil dan contoh model bahasa OpenAI.
defquery_pdf(query, retriever):
qa = RetrievalQA.from_chain_type(llm=OpenAI(openai_api_key=openai_api_key),
chain_type="stuff", retriever=retriever)
result = qa.run(query)
print(result)
Fungsi ini menggunakan instance QA yang dibuat untuk menjalankan kueri dan mencetak hasilnya.
Membuat Fungsi Utama
Fungsi utama akan mengontrol alur program secara keseluruhan. Ini akan mengambil masukan pengguna untuk nama file dokumen dan memuat dokumen itu. Kemudian buat OpenAIEmbeddings contoh untuk embeddings dan membangun a toko vektor berdasarkan dokumen yang dimuat dan penyematan. Simpan penyimpanan vektor ini ke file lokal.
Selanjutnya, muat penyimpanan vektor yang ada dari file lokal. Kemudian masukkan loop di mana pengguna dapat memasukkan kueri. Itu utama fungsi meneruskan pertanyaan ini ke kueri_pdf berfungsi bersama dengan retriever penyimpanan vektor yang ada. Perulangan akan berlanjut hingga pengguna memasukkan "keluar".
defmain():
filename = input("Enter the name of the document (.pdf or .txt):\n")
docs = load_document(filename)
embeddings = OpenAIEmbeddings(openai_api_key=openai_api_key)
vectorstore = FAISS.from_documents(docs, embeddings)
vectorstore.save_local("faiss_index_constitution")
persisted_vectorstore = FAISS.load_local("faiss_index_constitution", embeddings)
query = input("Type in your query (type 'exit' to quit):\n")
while query != "exit":
query_pdf(query, persisted_vectorstore.as_retriever())
query = input("Type in your query (type 'exit' to quit):\n")
Penyematan menangkap hubungan semantik antar kata. Vektor adalah bentuk di mana Anda dapat merepresentasikan potongan teks.
Kode ini mengubah data teks dalam dokumen menjadi vektor menggunakan embeddings yang dihasilkan oleh OpenAIEmbeddings. Kemudian mengindeks vektor-vektor ini menggunakan FAISS, untuk pengambilan dan perbandingan vektor serupa yang efisien. Hal inilah yang memungkinkan dilakukannya analisis terhadap dokumen yang diunggah.
Terakhir, gunakan konstruksi __name__ == "__main__". untuk memanggil fungsi utama jika pengguna menjalankan program mandiri:
if __name__ == "__main__":
main()
Aplikasi ini adalah aplikasi baris perintah. Sebagai perpanjangan, Anda bisa gunakan Streamlit untuk menambahkan antarmuka web ke aplikasi.
Melakukan Analisis Dokumen
Untuk melakukan analisis dokumen, simpan dokumen yang ingin Anda analisis di folder yang sama dengan proyek Anda, lalu jalankan programnya. Ini akan menanyakan nama dokumen yang ingin Anda analisis. Masukkan nama lengkapnya, lalu masukkan kueri untuk dianalisis oleh program.
Tangkapan layar di bawah ini menunjukkan hasil analisis PDF.
Output berikut menunjukkan hasil analisis file teks yang berisi kode sumber.
Pastikan file yang ingin Anda analisis dalam format PDF atau teks. Jika dokumen Anda dalam format lain, Anda bisa konversikan ke format PDF menggunakan alat online.
Memahami Teknologi di Balik Model Bahasa Besar
LangChain menyederhanakan pembuatan aplikasi menggunakan model bahasa besar. Ini juga berarti mengabstraksi apa yang terjadi di balik layar. Untuk memahami dengan tepat cara kerja aplikasi yang Anda buat, Anda harus memahami teknologi di balik model bahasa besar.