6 documents into text
Text Loader¶
In [1]:
Copied!
from langchain_community.document_loaders import TextLoader, CSVLoader
from langchain_community.document_loaders import TextLoader, CSVLoader
In [2]:
Copied!
root_path = "C:/Users/maruf/Documents/LangChainLabAssets"
text_data = TextLoader(f'{root_path}/Data.txt')
text_data.load()
root_path = "C:/Users/maruf/Documents/LangChainLabAssets"
text_data = TextLoader(f'{root_path}/Data.txt')
text_data.load()
Out[2]:
[Document(metadata={'source': 'C:/Users/maruf/Documents/LangChainLabAssets/Data.txt'}, page_content="I'm the data inside file name Data.txt")]
In [3]:
Copied!
csv_data = CSVLoader(f"{root_path}/Data.csv")
for a in csv_data.load():
print (a.page_content,end="\r\n\r\n")
csv_data = CSVLoader(f"{root_path}/Data.csv")
for a in csv_data.load():
print (a.page_content,end="\r\n\r\n")
col_1: this is col_2: the data col_3: inside col_4: of col_5: csv col_6: file2 col_1: this is col_2: the data col_3: inside col_4: of col_5: csv col_6: file3 col_1: this is col_2: the data col_3: inside col_4: of col_5: csv col_6: file4
Web Loader¶
More details : web base html
In [4]:
Copied!
from langchain_community.document_loaders import WebBaseLoader
import nest_asyncio
nest_asyncio.apply()
loader = WebBaseLoader("https://vensys.co.id/contact")
loader.requests_per_second = 1
docs = loader.aload()
docs
from langchain_community.document_loaders import WebBaseLoader
import nest_asyncio
nest_asyncio.apply()
loader = WebBaseLoader("https://vensys.co.id/contact")
loader.requests_per_second = 1
docs = loader.aload()
docs
USER_AGENT environment variable not set, consider setting it to identify your requests. C:\Users\maruf\AppData\Local\Temp\ipykernel_18720\3344457521.py:8: LangChainDeprecationWarning: See API reference for updated usage: https://python.langchain.com/api_reference/community/document_loaders/langchain_community.document_loaders.web_base.WebBaseLoader.html docs = loader.aload() Fetching pages: 100%|##############################################################################################################| 1/1 [00:00<00:00, 4.90it/s]
Out[4]:
[Document(metadata={'source': 'https://vensys.co.id/contact', 'title': 'VenSys - Financial IT Solution Provider', 'description': 'PT Venturium System Indonesia (VenSys) established since 2003. We provide comprehensive services.', 'language': 'No language found.'}, page_content='VenSys - Financial IT Solution Provider')]
PDF Loader¶
In [5]:
Copied!
from langchain_community.document_loaders import PyPDFLoader
pdf_loader = PyPDFLoader(f'{root_path}/Data.pdf')
pdf_loader.load()
from langchain_community.document_loaders import PyPDFLoader
pdf_loader = PyPDFLoader(f'{root_path}/Data.pdf')
pdf_loader.load()
Out[5]:
[Document(metadata={'producer': 'Microsoft® Word 2021', 'creator': 'Microsoft® Word 2021', 'creationdate': '2025-12-17T16:08:30+07:00', 'author': "Muhammad Farras Ma'ruf", 'moddate': '2025-12-17T16:08:30+07:00', 'source': 'C:/Users/maruf/Documents/LangChainLabAssets/Data.pdf', 'total_pages': 2, 'page': 0, 'page_label': '1'}, page_content='This is the data inside of data PDF \nThis is the PDF version on the data'),
Document(metadata={'producer': 'Microsoft® Word 2021', 'creator': 'Microsoft® Word 2021', 'creationdate': '2025-12-17T16:08:30+07:00', 'author': "Muhammad Farras Ma'ruf", 'moddate': '2025-12-17T16:08:30+07:00', 'source': 'C:/Users/maruf/Documents/LangChainLabAssets/Data.pdf', 'total_pages': 2, 'page': 1, 'page_label': '2'}, page_content='This is the second page')]
Split big docs into chunks¶
In [17]:
Copied!
from langchain_community.document_loaders import TextLoader
from langchain_text_splitters import RecursiveCharacterTextSplitter
big_data = TextLoader(f'{root_path}/BigData.txt')
docs = big_data.load()
# Membuat splitter
splitter= RecursiveCharacterTextSplitter(
chunk_size=1000, # Banyaknya karakter yang dopotong
chunk_overlap=200
)
splitted_docs = splitter.split_documents(docs)
for split_docs in splitted_docs:
print (split_docs, end="\r\n\r\n")
break ## Akan adabanyak, disini saya break ya
from langchain_community.document_loaders import TextLoader
from langchain_text_splitters import RecursiveCharacterTextSplitter
big_data = TextLoader(f'{root_path}/BigData.txt')
docs = big_data.load()
# Membuat splitter
splitter= RecursiveCharacterTextSplitter(
chunk_size=1000, # Banyaknya karakter yang dopotong
chunk_overlap=200
)
splitted_docs = splitter.split_documents(docs)
for split_docs in splitted_docs:
print (split_docs, end="\r\n\r\n")
break ## Akan adabanyak, disini saya break ya
page_content='PT Venturium System Indonesia, yang lebih dikenal dengan nama VenSys, adalah perusahaan penyedia solusi teknologi informasi yang telah berdiri sejak tahun 2003. Perusahaan ini memiliki fokus utama dalam memberikan layanan komprehensif serta solusi terintegrasi bagi pasar perbankan dan lembaga keuangan di Indonesia. Dengan pengalaman lebih dari dua dekade, VenSys telah memantapkan posisinya sebagai mitra strategis bagi berbagai institusi keuangan yang membutuhkan keandalan sistem, kepatuhan terhadap regulasi global, serta efisiensi operasional. VenSys berkantor pusat di Jakarta dan terus berkomitmen untuk mendukung transformasi digital di sektor finansial tanah air.' metadata={'source': 'C:/Users/maruf/Documents/LangChainLabAssets/BigData.txt'}
Raw text to document class¶
In [18]:
Copied!
# Membuat splitter
splitter= RecursiveCharacterTextSplitter(
chunk_size=1000, # Banyaknya karakter yang dopotong
chunk_overlap=200
)
list_docs, meta_data = (docs[0].page_content.split("\n\n"), [{'author':'Faris'},{'author':'Noah'},{'author':'Hilyah'}])
splitted_docs = splitter.create_documents(list_docs,meta_data)
for split_docs in splitted_docs:
print (split_docs, end="\r\n\r\n")
break # Di break biar gk panjang
# Membuat splitter
splitter= RecursiveCharacterTextSplitter(
chunk_size=1000, # Banyaknya karakter yang dopotong
chunk_overlap=200
)
list_docs, meta_data = (docs[0].page_content.split("\n\n"), [{'author':'Faris'},{'author':'Noah'},{'author':'Hilyah'}])
splitted_docs = splitter.create_documents(list_docs,meta_data)
for split_docs in splitted_docs:
print (split_docs, end="\r\n\r\n")
break # Di break biar gk panjang
page_content='PT Venturium System Indonesia, yang lebih dikenal dengan nama VenSys, adalah perusahaan penyedia solusi teknologi informasi yang telah berdiri sejak tahun 2003. Perusahaan ini memiliki fokus utama dalam memberikan layanan komprehensif serta solusi terintegrasi bagi pasar perbankan dan lembaga keuangan di Indonesia. Dengan pengalaman lebih dari dua dekade, VenSys telah memantapkan posisinya sebagai mitra strategis bagi berbagai institusi keuangan yang membutuhkan keandalan sistem, kepatuhan terhadap regulasi global, serta efisiensi operasional. VenSys berkantor pusat di Jakarta dan terus berkomitmen untuk mendukung transformasi digital di sektor finansial tanah air.' metadata={'author': 'Faris'}
Generating Text Embedding using Nomic Embed Text¶
Kita membuat inisiasi OllamaEmbddings menggunakan model nomic-embed-text.
In [8]:
Copied!
from langchain_ollama import OllamaEmbeddings
import numpy as np
model = OllamaEmbeddings(
model="nomic-embed-text",
)
from langchain_ollama import OllamaEmbeddings
import numpy as np
model = OllamaEmbeddings(
model="nomic-embed-text",
)
selanjutnya kita harus mengambil text yang telah dipecah menjadi beberapa bagian hasil dari RecursiveCharacterTextSplitter. Pada case ini kita menaruh object Document kedalam variable splitted_docs
In [9]:
Copied!
print (type(splitted_docs[0]))
print (type(splitted_docs[0]))
<class 'langchain_core.documents.base.Document'>
Variable tersebut menampung daftar class Document. Sedangkan kita akan menggunakan method embed_documentes yang mana membutuhkan variable string atau list of string. Maka dari itu kita hanya perlu mengambil nilai text (page_content) dari object Document.
In [10]:
Copied!
list_text_page_content = [a.page_content for a in splitted_docs]
list_text_page_content = [a.page_content for a in splitted_docs]
In [12]:
Copied!
embeddings = model.embed_documents(list_text_page_content) ## List_docs adalah hasil
np_embeddings = np.array(embeddings)
print(f"Banyak dimensi {np_embeddings.ndim}")
print(f"Banyak shaoe {np_embeddings.shape}")
print(np_embeddings[:][:10])
embeddings = model.embed_documents(list_text_page_content) ## List_docs adalah hasil
np_embeddings = np.array(embeddings)
print(f"Banyak dimensi {np_embeddings.ndim}")
print(f"Banyak shaoe {np_embeddings.shape}")
print(np_embeddings[:][:10])
Banyak dimensi 2 Banyak shaoe (4, 768) [[ 0.03008612 0.05142297 -0.16437466 ... -0.01637164 -0.01175664 -0.01440444] [-0.00503131 0.04765439 -0.12731963 ... 0.04273958 -0.06437009 -0.03599934] [ 0.03480719 0.03340675 -0.14277875 ... 0.00500158 -0.03396912 -0.04830693] [ 0.03197513 0.06226514 -0.13871765 ... -0.03341251 -0.03829032 -0.02596816]]
Hasil splitter membentuk 4 object Document, sehingga menghasilkan 4 vektor dengan isi setiap vector mengandung 768 angka.
Menyimpan, mengakses dan merubah data pada vector store¶
In [30]:
Copied!
from langchain_postgres.vectorstores import PGVector
from langchain_postgres.vectorstores import PGVector
In [31]:
Copied!
text_data_store_vector = TextLoader(f'{root_path}/BigData.txt')
## Memeuat loader kedalam bentuk class Documents
docs = text_data_store_vector.load()
## Potong big data kedalam potongan2an
splitter_store_vector = RecursiveCharacterTextSplitter(
chunk_size = 1000,
chunk_overlap = 200
)
## Class document baru setelah di potong
new_docs = splitter_store_vector.split_documents(docs)
## Import langchain Ollama
model_embeddings = OllamaEmbeddings(model="nomic-embed-text")
## Dsini kita tidak perlu memanggil embeed documents lagi, kita langsung masukan kedalam parameter PGVector
connection = "postgresql+psycopg://farras:farras@localhost:6060/farraslang"
class_vector_store = PGVector.from_documents(documents=new_docs,embedding=model_embeddings,connection=connection)
text_data_store_vector = TextLoader(f'{root_path}/BigData.txt')
## Memeuat loader kedalam bentuk class Documents
docs = text_data_store_vector.load()
## Potong big data kedalam potongan2an
splitter_store_vector = RecursiveCharacterTextSplitter(
chunk_size = 1000,
chunk_overlap = 200
)
## Class document baru setelah di potong
new_docs = splitter_store_vector.split_documents(docs)
## Import langchain Ollama
model_embeddings = OllamaEmbeddings(model="nomic-embed-text")
## Dsini kita tidak perlu memanggil embeed documents lagi, kita langsung masukan kedalam parameter PGVector
connection = "postgresql+psycopg://farras:farras@localhost:6060/farraslang"
class_vector_store = PGVector.from_documents(documents=new_docs,embedding=model_embeddings,connection=connection)
Mencari similiary data¶
In [33]:
Copied!
docs_for_similiary_search = class_vector_store.similarity_search("visi utama", k=1)
docs_for_similiary_search
docs_for_similiary_search = class_vector_store.similarity_search("visi utama", k=1)
docs_for_similiary_search
Out[33]:
[Document(id='79564502-be51-4076-8bd7-b678b35e95ef', metadata={'source': 'C:/Users/maruf/Documents/LangChainLabAssets/BigData.txt'}, page_content='Visi utama dari VenSys adalah menjadi perusahaan teknologi informasi terkemuka di Indonesia. Untuk mencapai visi tersebut, perusahaan menawarkan rangkaian solusi berkualitas yang memberikan keseimbangan terbaik antara nilai investasi dan kesuksesan bagi para pelanggan, mitra, karyawan, dan pemegang saham. Komitmen perusahaan tercermin dalam empat pilar utama: memberikan layanan berkualitas tinggi, menjadi organisasi yang berorientasi pada pelanggan (customer-oriented), melakukan pengembangan sumber daya manusia secara berkelanjutan melalui jalur karier terstruktur dan transfer pengetahuan, serta membangun hubungan jangka panjang yang didasari oleh komitmen konstan terhadap peningkatan solusi dan layanan.')]
In [42]:
Copied!
docs_for_similiary_search = class_vector_store.similarity_search("jenenge sopo", k=1)
docs_for_similiary_search
docs_for_similiary_search = class_vector_store.similarity_search("jenenge sopo", k=1)
docs_for_similiary_search
Out[42]:
[Document(id='67024696-83cf-4897-8221-79c1b91c1456', metadata={'source': 'C:/Users/maruf/Documents/LangChainLabAssets/BigData.txt'}, page_content='Salah satu keunggulan kompetitif VenSys terletak pada keahliannya dalam layanan SWIFT (Society for Worldwide Interbank Financial Telecommunication). VenSys menawarkan layanan SWIFT yang menyeluruh, mulai dari implementasi perangkat lunak SWIFT (seperti Alliance Access dan Alliance Gateway), implementasi konektivitas SWIFTNet, hingga dukungan teknis dan manajemen proyek untuk migrasi sistem. Dukungan ini sangat krusial bagi bank-bank di Indonesia untuk memastikan transaksi lintas negara berjalan lancar, aman, dan sesuai dengan standar internasional. Tim insinyur SWIFT yang bersertifikat di VenSys siap membantu klien dalam mengelola infrastruktur pesan finansial yang kompleks. Selain layanan SWIFT, VenSys juga menyediakan solusi Messaging Warehouse, Integrasi Sistem, Infrastruktur TI, Penyediaan Perangkat Keras IBM AS/400, serta layanan IT Outsourcing. Dalam era modernisasi perbankan saat ini, VenSys juga aktif memberikan edukasi dan solusi terkait standar industri terbaru. Hal ini')]
Mencari similiary data dengan score¶
In [52]:
Copied!
docs_for_similiary_search = class_vector_store.similarity_search_with_relevance_scores ("Visi utama dari VenSys adalah menjadi perusahaan teknologi", k=1)
docs_for_similiary_search[0][1]
docs_for_similiary_search = class_vector_store.similarity_search_with_relevance_scores ("Visi utama dari VenSys adalah menjadi perusahaan teknologi", k=1)
docs_for_similiary_search[0][1]
Out[52]:
0.7873913678527401
In [55]:
Copied!
docs_for_similiary_search = class_vector_store.similarity_search_with_relevance_scores ("Semoga tahun ini adalah tahun terkahir di Vensys", k=1)
docs_for_similiary_search[0][1]
docs_for_similiary_search = class_vector_store.similarity_search_with_relevance_scores ("Semoga tahun ini adalah tahun terkahir di Vensys", k=1)
docs_for_similiary_search[0][1]
Out[55]:
0.6768340092253472
Store data ke vector store¶
In [71]:
Copied!
from langchain_core.documents import Document
from uuid import uuid4
## Membuat documentsa
contents = ['Bismillah, semoga Allah luluskan aku pada kali ini menjadi Aparatur Sipil Negara',
'Allah maha menerima doa hambanya, Allah selalu mendeger suara hambanya, Allah maha mengabulkan doa hambanya']
documents = [Document(content, metadata={'jenis':f'nasihat ke {angka}','author':'muhammad farras'}) for angka, content in enumerate(contents)]
class_vector_store.add_documents(documents)
from langchain_core.documents import Document
from uuid import uuid4
## Membuat documentsa
contents = ['Bismillah, semoga Allah luluskan aku pada kali ini menjadi Aparatur Sipil Negara',
'Allah maha menerima doa hambanya, Allah selalu mendeger suara hambanya, Allah maha mengabulkan doa hambanya']
documents = [Document(content, metadata={'jenis':f'nasihat ke {angka}','author':'muhammad farras'}) for angka, content in enumerate(contents)]
class_vector_store.add_documents(documents)
Out[71]:
['88bd878f-417e-4c2b-b541-e876792bf43f', '2479944c-9f86-459b-b93f-c15b57d0916c']
In [ ]:
Copied!