HFswapnil commited on
Commit
3abdd3b
·
verified ·
1 Parent(s): 8598f84

Upload rag_util.py

Browse files
Files changed (1) hide show
  1. rag_util.py +66 -0
rag_util.py ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from langchain_text_splitters import RecursiveCharacterTextSplitter
2
+ from langchain_community.document_loaders import PyPDFLoader
3
+ # from langchain_core.vectorstores import InMemoryVectorStore
4
+ # from langchain_community.vectorstores import Chroma
5
+ from langchain_chroma import Chroma
6
+ from langchain_huggingface import HuggingFaceEmbeddings
7
+
8
+
9
+ embedding_model = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2")
10
+ # vector_database = InMemoryVectorStore(embedding_model)
11
+
12
+ # vector_database = Chroma(
13
+ # persist_directory="./chroma_store",
14
+ # embedding_function=embedding_model
15
+ # )
16
+
17
+
18
+
19
+
20
+
21
+ # document_retriever = vector_database.as_retriever(search_type="mmr", search_kwargs={"k" : 3, "lambda_mult": 0.8})
22
+
23
+
24
+ def load_pdf_document(file_path):
25
+ document_loader = PyPDFLoader(file_path)
26
+ return document_loader.load()
27
+
28
+ def chunk_documents(raw_documents):
29
+ text_processor = RecursiveCharacterTextSplitter(
30
+ chunk_size = 1000,
31
+ chunk_overlap = 200,
32
+ add_start_index = True
33
+ )
34
+ return text_processor.split_documents(raw_documents)
35
+
36
+ def find_related_documents(query, vector_database):
37
+ # return vector_database.similarity_search(query, k=2)
38
+ return vector_database.max_marginal_relevance_search(query, k=2, fetch_k=5, lambda_mult=0.6)
39
+
40
+
41
+ def ProcessDocuments(document_path: str, chatID: str) -> str:
42
+
43
+ loaded_doc = load_pdf_document(document_path)
44
+ chunked_doc = chunk_documents(loaded_doc)
45
+
46
+
47
+ vector_database = Chroma(
48
+ persist_directory=f"./chroma_store/{chatID}",
49
+ embedding_function=embedding_model
50
+ )
51
+
52
+ vector_database.add_documents(chunked_doc)
53
+
54
+
55
+ def Create_RAG_Prompt(query: str, chatID: str):
56
+
57
+ vector_database = Chroma(
58
+ persist_directory=f"./chroma_store/{chatID}",
59
+ embedding_function=embedding_model
60
+ )
61
+
62
+ relevant_docs = find_related_documents(query, vector_database)
63
+ context_text = "\n\n".join([doc.page_content for doc in relevant_docs])
64
+
65
+ return query, context_text
66
+