# ID dokumen yang disimpan: Periksa Dokumendb.docstore._dict
{'f0076829-118f-4a4d-a806-603f5ac79aa0': Document(metadata={'source': 'chapter9/data/nlp-keywords.txt'}, page_content='Keyword: Word Embeddings\nDefinition: Word embeddings are vector representations of words in a continuous vector space, where semantically similar words are mapped closer together. They are commonly used in NLP tasks to capture the semantic meaning of words.\nExample: If a user searches for "king", the word embeddings might return similar words like "queen", "monarch", or "prince".\nRelated Keywords: Vector Space Model, Deep Learning, Semantic Analysis'), 'c968c9a6-dc63-4267-8d20-969544c2ce28': Document(metadata={'source': 'chapter9/data/nlp-keywords.txt'}, page_content='Keyword: Named Entity Recognition (NER)\nDefinition: Named Entity Recognition is an NLP technique that identifies and classifies proper nouns in text, such as the names of people, organizations, locations, dates, and other entities.\nExample: A search for "Barack Obama visited Paris" will identify "Barack Obama" as a person and "Paris" as a location.\nRelated Keywords: Information Extraction, Entity Recognition, Machine Learning'), '2b7ce015-18ef-47de-8292-b27e9f4ca926': Document(metadata={'source': 'chapter9/data/nlp-keywords.txt'}, page_content='Keyword: Sentiment Analysis\nDefinition: Sentiment Analysis is the process of determining the sentiment or emotional tone behind a body of text, typically classifying it as positive, negative, or neutral.\nExample: When analyzing customer reviews, sentiment analysis can classify the sentence "I love this product!" as positive sentiment.\nRelated Keywords: Opinion Mining, Text Classification, Emotion Detection'), '5fa2052e-94b0-428d-b2ff-a2bd97837f4a': Document(metadata={'source': 'chapter9/data/nlp-keywords.txt'}, page_content='Keyword: Text Summarization\nDefinition: Text summarization is the process of creating a concise summary of a longer text document while preserving its key information and overall meaning.\nExample: A search for a long article on climate change can return a brief summary highlighting the main points, such as "Rising temperatures, sea level rise, and global warming impacts."\nRelated Keywords: Content Generation, Information Retrieval, Automatic Summarization'), '88eb8103-c118-4875-af9c-600eac468413': Document(metadata={'source': 'chapter9/data/nlp-keywords.txt'}, page_content='Keyword: Language Translation\nDefinition: Language Translation in NLP refers to the automatic conversion of text from one language to another, using models trained on large multilingual datasets.\nExample: If a user searches for "Translate \'Good morning\' to Spanish", the system returns "Buenos días".\nRelated Keywords: Machine Translation, Bilingual Corpus, Neural Networks'), '33ec4295-0280-4263-b48c-a845bb989fea': Document(metadata={'source': 'chapter9/data/nlp-keywords.txt'}, page_content='Keyword: Tokenization\nDefinition: Tokenization is the process of breaking down text into smaller units, such as words, phrases, or symbols, which are then used as input for various NLP tasks.\nExample: Given the sentence "Natural Language Processing is fun", tokenization will split it into ["Natural", "Language", "Processing", "is", "fun"].\nRelated Keywords: Text Processing, Lexical Analysis, Sentence Segmentation'), '2aec9b48-075b-4627-95d3-52f245d3a756': Document(metadata={'source': 'chapter9/data/nlp-keywords.txt'}, page_content='Keyword: Part-of-Speech Tagging (POS Tagging)\nDefinition: POS Tagging is the process of labeling words in a text with their respective parts of speech, such as nouns, verbs, adjectives, etc.\nExample: In the sentence "The quick brown fox jumps over the lazy dog", POS tagging identifies "fox" as a noun and "jumps" as a verb.\nRelated Keywords: Syntactic Analysis, Morphology, Linguistics'), 'cdf3fe35-250f-4940-91a1-ff76dfc1b8b2': Document(metadata={'source': 'chapter9/data/nlp-keywords.txt'}, page_content='Keyword: Dependency Parsing\nDefinition: Dependency Parsing is the process of analyzing the grammatical structure of a sentence and establishing relationships between "head" words and words which modify those heads.\nExample: In the sentence "The cat sat on the mat", dependency parsing would show that "sat" is the head verb, with "cat" as the subject and "mat" as the object.\nRelated Keywords: Syntax, Tree Structure, Grammar Analysis'), 'bd689bf8-0963-4934-8117-c9003ee797bb': Document(metadata={'source': 'chapter9/data/nlp-keywords.txt'}, page_content='Keyword: Coreference Resolution\nDefinition: Coreference Resolution is the task of identifying when two or more expressions in a text refer to the same entity.\nExample: In the sentences "John went to the store. He bought milk", coreference resolution identifies that "He" refers to "John".\nRelated Keywords: Pronoun Resolution, Entity Linking, Anaphora'), 'a8614ed6-8c33-44b9-9ddc-97bd962b6225': Document(metadata={'source': 'chapter9/data/nlp-keywords.txt'}, page_content='Keyword: Text Classification\nDefinition: Text Classification is the process of assigning predefined categories to a text based on its content.\nExample: An email filtering system might classify emails as "Spam" or "Not Spam" based on their content.\nRelated Keywords: Document Categorization, Text Mining, Supervised Learning')}
Pembuatan Penyimpanan Vektor FAISS (from_texts)
Metode kelas from_texts digunakan untuk membuat penyimpanan vektor FAISS dengan menggunakan daftar teks dan fungsi embedding.
Parameter:
texts (List[str]): Daftar teks yang akan ditambahkan ke penyimpanan vektor.
embedding (Embeddings): Fungsi embedding yang akan digunakan.
metadatas (Optional[List[dict]]): Daftar metadata. Nilai default adalah None.
ids (Optional[List[str]]): Daftar ID dokumen. Nilai default adalah None. **kwargs: Argumen kata kunci tambahan.
Cara Kerja:
Teks di-embed menggunakan fungsi embedding yang disediakan.
Metode __from dipanggil bersama dengan vektor yang telah di-embed untuk membuat instance FAISS.
Returns:
FAISS: Instance penyimpanan vektor FAISS yang telah dibuat.
Catatan:
Metode ini menawarkan antarmuka yang ramah pengguna, yang secara bersamaan menangani embedding dokumen, pembuatan penyimpanan dokumen dalam memori, dan inisialisasi basis data FAISS.
Ini adalah cara yang nyaman untuk memulai dengan cepat.
Peringatan:
Perhatikan penggunaan memori saat memproses sejumlah besar teks.
Jika menggunakan metadata atau ID, pastikan untuk menyediakan daftar yang memiliki panjang yang sama dengan daftar teks.
# Membuat dari daftar stringdb2 = FAISS.from_texts( ["Halo. Sangat senang bertemu dengan Anda.", "Nama saya Teddy."], embedding=OpenAIEmbeddings(), metadatas=[{"source": "Dokumen Teks"}, {"source": "Dokumen Teks"}], ids=["doc1", "doc2"],)
Memeriksa hasil yang disimpan. Nilai ID memeriksa untuk melihat apakah nilai ID yang ditentukan sudah masuk.
# Konten yang tersimpandb2.docstore._dict
{'doc1': Document(metadata={'source': 'Dokumen Teks'}, page_content='Halo. Sangat senang bertemu dengan Anda.'), 'doc2': Document(metadata={'source': 'Dokumen Teks'}, page_content='Nama saya Teddy.')}
Pencarian Kemiripan (Similarity Search)
Metode similarity_search menyediakan fungsi untuk mencari dokumen-dokumen yang paling mirip dengan kueri yang diberikan.
Parameter:
query (str): Teks kueri pencarian untuk menemukan dokumen yang mirip.
k (int): Jumlah dokumen yang akan dikembalikan. Nilai default adalah 4.
filter (Optional[Union[Callable, Dict[str, Any]]]): Fungsi penyaring atau dictionary untuk memfilter metadata. Nilai default adalah None.
fetch_k (int): Jumlah dokumen yang akan diambil sebelum difilter. Nilai default adalah 20.
**kwargs: Argumen kata kunci tambahan.
Returns:
List[Document]: Daftar dokumen yang paling mirip dengan kueri.
Cara Kerja:
Metode similarity_search_with_score dipanggil secara internal untuk mencari dokumen dengan nilai kesamaan.
Hanya dokumen yang dikembalikan dari hasil pencarian, tanpa nilai kesamaan.
Fitur Utama:
Anda dapat menggunakan parameter filter untuk memfilter berdasarkan metadata.
Melalui fetch_k, Anda dapat mengatur jumlah dokumen yang diambil sebelum difilter, untuk memastikan jumlah dokumen yang diinginkan setelah pemfilteran.
Pertimbangan Saat Penggunaan:
Kinerja pencarian sangat bergantung pada kualitas model embedding yang digunakan.
Pada dataset besar, penting untuk menyesuaikan nilai k dan fetch_k untuk menyeimbangkan kecepatan dan akurasi pencarian.
Jika memerlukan pemfilteran yang kompleks, Anda dapat memberikan fungsi kustom pada parameter filter untuk kontrol yang lebih detail.
Tips Optimasi:
Untuk kueri yang sering digunakan, caching hasil pencarian dapat meningkatkan kecepatan pencarian yang berulang.
Jika fetch_k diatur terlalu besar, kecepatan pencarian bisa melambat, jadi sebaiknya menemukan nilai yang sesuai melalui eksperimen.
# Pencarian kemiripandb.similarity_search("Ceritakan tentang Sentiment Analysis")
[Document(metadata={'source': 'chapter9/data/nlp-keywords.txt'}, page_content='Keyword: Sentiment Analysis\nDefinition: Sentiment Analysis is the process of determining the sentiment or emotional tone behind a body of text, typically classifying it as positive, negative, or neutral.\nExample: When analyzing customer reviews, sentiment analysis can classify the sentence "I love this product!" as positive sentiment.\nRelated Keywords: Opinion Mining, Text Classification, Emotion Detection'), Document(metadata={'source': 'chapter9/data/nlp-keywords.txt'}, page_content='Keyword: Text Summarization\nDefinition: Text summarization is the process of creating a concise summary of a longer text document while preserving its key information and overall meaning.\nExample: A search for a long article on climate change can return a brief summary highlighting the main points, such as "Rising temperatures, sea level rise, and global warming impacts."\nRelated Keywords: Content Generation, Information Retrieval, Automatic Summarization'), Document(metadata={'source': 'chapter9/data/nlp-keywords.txt'}, page_content='Keyword: Part-of-Speech Tagging (POS Tagging)\nDefinition: POS Tagging is the process of labeling words in a text with their respective parts of speech, such as nouns, verbs, adjectives, etc.\nExample: In the sentence "The quick brown fox jumps over the lazy dog", POS tagging identifies "fox" as a noun and "jumps" as a verb.\nRelated Keywords: Syntactic Analysis, Morphology, Linguistics'), Document(metadata={'source': 'chapter9/data/nlp-keywords.txt'}, page_content='Keyword: Text Classification\nDefinition: Text Classification is the process of assigning predefined categories to a text based on its content.\nExample: An email filtering system might classify emails as "Spam" or "Not Spam" based on their content.\nRelated Keywords: Document Categorization, Text Mining, Supervised Learning')]
Anda dapat menentukan jumlah hasil pencarian dalam nilai k.
# menentukan nilai kdb.similarity_search("Ceritakan tentang Sentiment Analysis", k=2)
[Document(metadata={'source': 'chapter9/data/nlp-keywords.txt'}, page_content='Keyword: Sentiment Analysis\nDefinition: Sentiment Analysis is the process of determining the sentiment or emotional tone behind a body of text, typically classifying it as positive, negative, or neutral.\nExample: When analyzing customer reviews, sentiment analysis can classify the sentence "I love this product!" as positive sentiment.\nRelated Keywords: Opinion Mining, Text Classification, Emotion Detection'), Document(metadata={'source': 'chapter9/data/nlp-keywords.txt'}, page_content='Keyword: Text Summarization\nDefinition: Text summarization is the process of creating a concise summary of a longer text document while preserving its key information and overall meaning.\nExample: A search for a long article on climate change can return a brief summary highlighting the main points, such as "Rising temperatures, sea level rise, and global warming impacts."\nRelated Keywords: Content Generation, Information Retrieval, Automatic Summarization')]
Anda dapat menggunakan informasi metadata dalam filter untuk memfilter.
# Menggunakan filterdb.similarity_search("Ceritakan tentang Sentiment Analysis", filter={"source": "data/nlp-keywords.txt"}, k=2)
[Document(metadata={'source': 'chapter9/data/nlp-keywords.txt'}, page_content='Keyword: Sentiment Analysis\nDefinition: Sentiment Analysis is the process of determining the sentiment or emotional tone behind a body of text, typically classifying it as positive, negative, or neutral.\nExample: When analyzing customer reviews, sentiment analysis can classify the sentence "I love this product!" as positive sentiment.\nRelated Keywords: Opinion Mining, Text Classification, Emotion Detection'), Document(metadata={'source': 'chapter9/data/nlp-keywords.txt'}, page_content='Keyword: Text Summarization\nDefinition: Text summarization is the process of creating a concise summary of a longer text document while preserving its key information and overall meaning.\nExample: A search for a long article on climate change can return a brief summary highlighting the main points, such as "Rising temperatures, sea level rise, and global warming impacts."\nRelated Keywords: Content Generation, Information Retrieval, Automatic Summarization')]
Penambahan dari Dokumen (add_documents)
Metode add_documents menyediakan fungsi untuk menambahkan atau memperbarui dokumen dalam penyimpanan vektor.
Parameter:
documents (List[Document]): Daftar dokumen yang akan ditambahkan ke penyimpanan vektor.
**kwargs: Argumen kata kunci tambahan.
Return:
List[str]: Daftar ID dari teks yang ditambahkan.
Cara Kerja:
Mengekstrak konten teks dan metadata dari dokumen.
Memanggil metode add_texts untuk melakukan penambahan yang sebenarnya.
Fitur Utama:
Memungkinkan pemrosesan objek dokumen secara langsung, yang membuatnya lebih praktis.
Logika penanganan ID disertakan untuk memastikan keunikan dokumen.
Beroperasi berdasarkan metode add_texts, sehingga meningkatkan ketergunaan ulang kode.
from langchain_core.documents import Document# Menetapkan page_content dan metadatadb.add_documents( [Document( page_content="Halo! Kali ini kita akan mencoba menambahkan dokumen baru.", metadata={"source": "mydata.txt"}, ) ], ids=["new_doc1"],)
# Memeriksa data yang telah ditambahkandb.similarity_search("Halo", k=1)
[Document(metadata={'source': 'mydata.txt'}, page_content='Halo! Kali ini kita akan mencoba menambahkan dokumen baru.')]
Penambahan dari Teks (add_texts)
Metode add_texts menyediakan fungsi untuk melakukan embedding pada teks dan menambahkannya ke dalam penyimpanan vektor.
Parameter:
texts (Iterable[str]): Iterable teks yang akan ditambahkan ke penyimpanan vektor.
metadatas (Optional[List[dict]]): Daftar metadata yang terkait dengan teks (opsional).
ids (Optional[List[str]]): Daftar pengenal unik untuk teks (opsional).
**kwargs: Argumen kata kunci tambahan.
Nilai Pengembalian :
List[str]: Daftar ID dari teks yang ditambahkan ke penyimpanan vektor.
Cara Kerja:
Mengonversi iterable teks yang diterima menjadi daftar.
Menggunakan metode _embed_documents untuk melakukan embedding pada teks.
Memanggil metode __add untuk menambahkan teks yang telah di-embed ke dalam penyimpanan vektor.
# Menambahkan data barudb.add_texts( ["Kali ini kita menambahkan data teks.", "Ini adalah data teks kedua yang ditambahkan."], metadatas=[{"source": "mydata.txt"}, {"source": "mydata.txt"}], ids=["new_doc2", "new_doc3"],)
['new_doc2', 'new_doc3']
# Memeriksa data yang ditambahkandb.index_to_docstore_id
Metode delete menyediakan fungsi untuk menghapus dokumen yang sesuai dengan ID yang ditentukan dari penyimpanan vektor.
Parameter:
ids (Optional[List[str]]): Daftar ID dokumen yang akan dihapus.
**kwargs: Argumen kata kunci tambahan (tidak digunakan dalam metode ini).
Return :
Optional[bool]: Mengembalikan True jika penghapusan berhasil, False jika gagal, atau None jika tidak diimplementasikan.
Cara Kerja:
Memeriksa validitas ID yang dimasukkan.
Mencari indeks yang sesuai dengan ID yang akan dihapus.
Menghapus ID tersebut dari indeks FAISS.
Menghapus dokumen dengan ID tersebut dari penyimpanan dokumen.
Memperbarui pemetaan indeks dan ID.
Fitur Utama:
Penghapusan berbasis ID memungkinkan pengelolaan dokumen yang akurat.
Penghapusan dilakukan di kedua sisi, yaitu indeks FAISS dan penyimpanan dokumen.
Setelah penghapusan, dilakukan penyusunan ulang indeks untuk menjaga konsistensi data.
Peringatan:
Operasi penghapusan tidak dapat dibatalkan, jadi harus dilakukan dengan hati-hati.
Pengendalian konkurensi tidak diimplementasikan, sehingga perlu diperhatikan dalam lingkungan multi-thread.
# Tambahkan data untuk dihapusids = db.add_texts( ["Tambahkan data untuk dihapus", "Data untuk penghapusan kedua."], metadatas = [{"source": "mydata.txt"}, {"source": "mydata.txt"}], ids = ["delete_doc1", "delete_doc2"],)
# Konfirmasikan ID yang akan dihapusprint(ids)
['delete_doc1', 'delete_doc2']
delete dapat menghapus dengan memasukkan id.
# hapus berdasarkan iddb.delete(ids)
True
# Menampilkan hasil yang dihapusdb.index_to_docstore_id
Metode save_local menyediakan fungsi untuk menyimpan indeks FAISS, penyimpanan dokumen, dan pemetaan ID dokumen ke indeks di disk lokal.
Parameter:
folder_path (str): Jalur folder tempat penyimpanan.
index_name (str): Nama file indeks yang akan disimpan (default: "index").
Cara Kerja:
Membuat jalur folder yang ditentukan (akan diabaikan jika sudah ada).
Menyimpan indeks FAISS ke dalam file terpisah.
Menyimpan penyimpanan dokumen dan pemetaan ID dokumen ke indeks dalam format pickle.
Pertimbangan Penggunaan:
Diperlukan izin menulis ke jalur penyimpanan.
Untuk data berukuran besar, ruang penyimpanan dan waktu yang diperlukan bisa sangat signifikan.
Perlu mempertimbangkan risiko keamanan yang terkait dengan penggunaan pickle.
# Simpan ke Disk Lokaldb.save_local(folder_path="faiss_db", index_name="faiss_index")
Memuat dari Lokal (Load Local)
Metode kelas load_local menyediakan fungsi untuk memuat indeks FAISS, penyimpanan dokumen, dan pemetaan ID dokumen ke indeks yang disimpan di disk lokal.
Parameter:
folder_path (str): Jalur folder tempat file yang akan dimuat disimpan.
embeddings (Embeddings): Objek embedding yang akan digunakan untuk membuat kueri.
index_name (str): Nama file indeks yang akan dimuat (default: "index").
allow_dangerous_deserialization (bool): Mengizinkan atau tidaknya deserialisasi file pickle yang berisiko (default: False).
Nilai Pengembalian:
FAISS: Objek FAISS yang telah dimuat.
Cara Kerja:
Memverifikasi risiko deserialisasi dan meminta izin eksplisit dari pengguna.
Memuat indeks FAISS secara terpisah.
Menggunakan pickle untuk memuat penyimpanan dokumen dan pemetaan ID dokumen ke indeks.
Membuat dan mengembalikan objek FAISS dari data yang dimuat.
# Memuat data yang disimpanloaded_db = FAISS.load_local( folder_path="faiss_db", index_name="faiss_index", embeddings=embeddings, allow_dangerous_deserialization=True,)
# Memeriksa data yang dimuatloaded_db.index_to_docstore_id
Metode as_retriever menyediakan fungsi untuk membuat objek VectorStoreRetriever berdasarkan penyimpanan vektor saat ini.
Parameter:
**kwargs: Argumen kata kunci yang akan diteruskan ke fungsi pencarian.
search_type (Optional[str]): Jenis pencarian ("similarity", "mmr", "similarity_score_threshold").
search_kwargs (Optional[Dict]): Argumen kata kunci tambahan yang akan diteruskan ke fungsi pencarian.
Return:
VectorStoreRetriever: Objek pencarian berbasis penyimpanan vektor.
Fitur Utama:
Mendukung berbagai jenis pencarian:
"similarity": Pencarian berbasis kesamaan (default).
"mmr": Pencarian Maximal Marginal Relevance.
"similarity_score_threshold": Pencarian berbasis kesamaan dengan ambang batas skor.
Kustomisasi parameter pencarian:
k: Jumlah dokumen yang akan dikembalikan.
score_threshold: Ambang batas skor kesamaan.
fetch_k: Jumlah dokumen yang akan diambil untuk algoritma MMR.
lambda_mult: Parameter pengatur keragaman untuk MMR.
filter: Penyaringan berdasarkan metadata dokumen.
Pertimbangan Penggunaan:
Pilih jenis pencarian dan parameter yang tepat untuk menyesuaikan kualitas dan variasi hasil pencarian.
Pada dataset berukuran besar, sesuaikan nilai fetch_k dan k untuk mencapai keseimbangan antara kinerja dan akurasi.
Manfaatkan fitur penyaringan untuk mencari dokumen yang sesuai dengan kondisi tertentu.
Tips Optimasi:
Saat menggunakan pencarian MMR, tingkatkan fetch_k dan sesuaikan lambda_mult untuk mencapai keseimbangan antara keragaman dan relevansi.
Gunakan pencarian berbasis ambang batas untuk hanya mengembalikan dokumen dengan relevansi tinggi.
Peringatan:
Pengaturan parameter yang tidak tepat dapat mempengaruhi kinerja pencarian atau kualitas hasilnya.
Pada dataset berukuran besar, pengaturan nilai k yang tinggi dapat meningkatkan waktu pencarian. Defaultnya adalah mengembalikan 4 dokumen yang paling mirip berdasarkan pencarian kesamaan.
# ubah menjadi pencari
retriever = db.as_retriever()
# melakukan pencarian
retriever.invoke("Ceritakan tentang Sentiment Analysis")
[Document(metadata={'source': 'chapter9/data/nlp-keywords.txt'}, page_content='Keyword: Sentiment Analysis\nDefinition: Sentiment Analysis is the process of determining the sentiment or emotional tone behind a body of text, typically classifying it as positive, negative, or neutral.\nExample: When analyzing customer reviews, sentiment analysis can classify the sentence "I love this product!" as positive sentiment.\nRelated Keywords: Opinion Mining, Text Classification, Emotion Detection'), Document(metadata={'source': 'chapter9/data/nlp-keywords.txt'}, page_content='Keyword: Text Summarization\nDefinition: Text summarization is the process of creating a concise summary of a longer text document while preserving its key information and overall meaning.\nExample: A search for a long article on climate change can return a brief summary highlighting the main points, such as "Rising temperatures, sea level rise, and global warming impacts."\nRelated Keywords: Content Generation, Information Retrieval, Automatic Summarization'), Document(metadata={'source': 'chapter9/data/nlp-keywords.txt'}, page_content='Keyword: Part-of-Speech Tagging (POS Tagging)\nDefinition: POS Tagging is the process of labeling words in a text with their respective parts of speech, such as nouns, verbs, adjectives, etc.\nExample: In the sentence "The quick brown fox jumps over the lazy dog", POS tagging identifies "fox" as a noun and "jumps" as a verb.\nRelated Keywords: Syntactic Analysis, Morphology, Linguistics'), Document(metadata={'source': 'chapter9/data/nlp-keywords.txt'}, page_content='Keyword: Text Classification\nDefinition: Text Classification is the process of assigning predefined categories to a text based on its content.\nExample: An email filtering system might classify emails as "Spam" or "Not Spam" based on their content.\nRelated Keywords: Document Categorization, Text Mining, Supervised Learning')]
Mengambil lebih banyak dokumen dengan keragaman yang lebih besar
k: Jumlah dokumen yang akan dikembalikan (standar: 4)
fetch_k: Jumlah dokumen yang akan diteruskan ke algoritme MMR (default: 20)
lambda_mult: Skala keragaman hasil MMR (0-1, default: 0,5)
# Melakukan pencarian MMR
retriever = db.as_retriever(
search_type="mmr", search_kwargs={"k": 6, "lambda_mult": 0.25, "fetch_k": 10}
)
retriever.invoke("Ceritakan tentang Sentiment Analysis")
[Document(metadata={'source': 'chapter9/data/nlp-keywords.txt'}, page_content='Keyword: Sentiment Analysis\nDefinition: Sentiment Analysis is the process of determining the sentiment or emotional tone behind a body of text, typically classifying it as positive, negative, or neutral.\nExample: When analyzing customer reviews, sentiment analysis can classify the sentence "I love this product!" as positive sentiment.\nRelated Keywords: Opinion Mining, Text Classification, Emotion Detection'), Document(metadata={'source': 'chapter9/data/nlp-keywords.txt'}, page_content='Keyword: Word Embeddings\nDefinition: Word embeddings are vector representations of words in a continuous vector space, where semantically similar words are mapped closer together. They are commonly used in NLP tasks to capture the semantic meaning of words.\nExample: If a user searches for "king", the word embeddings might return similar words like "queen", "monarch", or "prince".\nRelated Keywords: Vector Space Model, Deep Learning, Semantic Analysis'), Document(metadata={'source': 'chapter9/data/nlp-keywords.txt'}, page_content='Keyword: Coreference Resolution\nDefinition: Coreference Resolution is the task of identifying when two or more expressions in a text refer to the same entity.\nExample: In the sentences "John went to the store. He bought milk", coreference resolution identifies that "He" refers to "John".\nRelated Keywords: Pronoun Resolution, Entity Linking, Anaphora'), Document(metadata={'source': 'chapter9/data/nlp-keywords.txt'}, page_content='Keyword: Dependency Parsing\nDefinition: Dependency Parsing is the process of analyzing the grammatical structure of a sentence and establishing relationships between "head" words and words which modify those heads.\nExample: In the sentence "The cat sat on the mat", dependency parsing would show that "sat" is the head verb, with "cat" as the subject and "mat" as the object.\nRelated Keywords: Syntax, Tree Structure, Grammar Analysis'), Document(metadata={'source': 'chapter9/data/nlp-keywords.txt'}, page_content='Keyword: Language Translation\nDefinition: Language Translation in NLP refers to the automatic conversion of text from one language to another, using models trained on large multilingual datasets.\nExample: If a user searches for "Translate \'Good morning\' to Spanish", the system returns "Buenos días".\nRelated Keywords: Machine Translation, Bilingual Corpus, Neural Networks'), Document(metadata={'source': 'chapter9/data/nlp-keywords.txt'}, page_content='Keyword: Text Summarization\nDefinition: Text summarization is the process of creating a concise summary of a longer text document while preserving its key information and overall meaning.\nExample: A search for a long article on climate change can return a brief summary highlighting the main points, such as "Rising temperatures, sea level rise, and global warming impacts."\nRelated Keywords: Content Generation, Information Retrieval, Automatic Summarization')]
Dapatkan lebih banyak dokumen untuk algoritme MMR, tetapi hanya kembalikan dua dokumen teratas
# Lakukan pencarian MMR, dengan hanya mengembalikan dua teratas
retriever = db.as_retriever(search_type="mmr", search_kwargs={"k": 2, "fetch_k": 10})
retriever.invoke("Ceritakan tentang Sentiment Analysis")
[Document(metadata={'source': 'chapter9/data/nlp-keywords.txt'}, page_content='Keyword: Sentiment Analysis\nDefinition: Sentiment Analysis is the process of determining the sentiment or emotional tone behind a body of text, typically classifying it as positive, negative, or neutral.\nExample: When analyzing customer reviews, sentiment analysis can classify the sentence "I love this product!" as positive sentiment.\nRelated Keywords: Opinion Mining, Text Classification, Emotion Detection'), Document(metadata={'source': 'chapter9/data/nlp-keywords.txt'}, page_content='Keyword: Word Embeddings\nDefinition: Word embeddings are vector representations of words in a continuous vector space, where semantically similar words are mapped closer together. They are commonly used in NLP tasks to capture the semantic meaning of words.\nExample: If a user searches for "king", the word embeddings might return similar words like "queen", "monarch", or "prince".\nRelated Keywords: Vector Space Model, Deep Learning, Semantic Analysis')]
Cari hanya dokumen dengan kemiripan di atas ambang batas tertentu
# Melakukan pencarian berbasis ambang batas
retriever = db.as_retriever(
search_type="similarity_score_threshold",search_kwargs={"score_threshold": 0.8}
)
retriever.invoke("Ceritakan tentang Sentiment Analysis")
[]
Cari hanya satu dokumen yang paling mirip
# Tetapkan k = 1 untuk mengambil hanya dokumen yang paling mirip
retriever = db.as_retriever(search_kwargs={"k": 1})
retriever.invoke("Ceritakan tentang Sentiment Analysis")
[Document(metadata={'source': 'chapter9/data/finance-keywords.txt'}, page_content='Keyword: Inflation\nDefinition: Inflation is the rate at which the general level of prices for goods and services is rising, and subsequently, purchasing power is falling.\nExample: If the inflation rate is 2%, what costs $100 today will cost $102 a year from now.\nRelated Keywords: Price Stability, Economic Indicator, Purchasing Power'), Document(metadata={'source': 'chapter9/data/finance-keywords.txt'}, page_content='Keyword: Fixed Income\nDefinition: Fixed income refers to investments that provide regular, fixed returns, such as bonds or certificates of deposit.\nExample: Purchasing a government bond that pays a 3% annual interest rate for 10 years is an example of a fixed income investment.\nRelated Keywords: Bonds, Interest Payments, Safe Investments')]