diff --git a/.gitignore b/.gitignore
index 0dbf2f2..41d8dd4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -168,3 +168,8 @@ cython_debug/
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/
+chroma/chroma.sqlite3
+chroma/c1d09313-7362-4ef4-b0b1-6b53736ea827/data_level0.bin
+chroma/c1d09313-7362-4ef4-b0b1-6b53736ea827/header.bin
+chroma/c1d09313-7362-4ef4-b0b1-6b53736ea827/length.bin
+chroma/c1d09313-7362-4ef4-b0b1-6b53736ea827/link_lists.bin
diff --git a/.vscode/launch.json b/.vscode/launch.json
new file mode 100644
index 0000000..53bc9ec
--- /dev/null
+++ b/.vscode/launch.json
@@ -0,0 +1,26 @@
+{
+ // Use IntelliSense to learn about possible attributes.
+ // Hover to view descriptions of existing attributes.
+ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "name": "Python:Streamlit",
+ "type": "debugpy",
+ "request": "launch",
+ "module": "streamlit",
+ "args": [
+ "run",
+ "app/streamlit_app.py",
+ ]
+ },
+ {
+ "name": "Python Debugger: main.py",
+ "type": "debugpy",
+ "request": "launch",
+ "program": "main.py",
+ "console": "integratedTerminal",
+ "justMyCode": false
+ }
+ ]
+}
\ No newline at end of file
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..786d4d3
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,3 @@
+{
+ "nixEnvSelector.nixFile": "${workspaceFolder}/shell.nix"
+}
\ No newline at end of file
diff --git a/app/__init__.py b/app/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/app/rag_chain.py b/app/rag_chain.py
new file mode 100644
index 0000000..df883e7
--- /dev/null
+++ b/app/rag_chain.py
@@ -0,0 +1,39 @@
+from llm.ollama import load_llm
+from vectordb.vector_store import retrieve
+from langchain.prompts import PromptTemplate
+from langchain_core.output_parsers import StrOutputParser
+
+# Define the prompt template for the LLM
+prompt = PromptTemplate(
+ template="""You are an assistant for question-answering tasks.
+ Use the following context to answer the question.
+ If you don't know the answer, just say that you don't know.
+ Use three sentences maximum and keep the answer concise:
+ Question: {question}
+ Context: {context}
+ Answer:
+ """,
+ input_variables=["question", "documents"],
+)
+
+def get_rag_response(query):
+ print("⌄⌄⌄⌄ Retrieving ⌄⌄⌄⌄")
+ retrieved_docs, metadata = retrieve(query, 10)
+ print("Query Found %d documents." % len(retrieved_docs[0]))
+ for meta in metadata[0]:
+ print("Metadata: ", meta)
+ print("⌃⌃⌃⌃ Retrieving ⌃⌃⌃⌃ " )
+
+ print("⌄⌄⌄⌄ Augmented Prompt ⌄⌄⌄⌄")
+ llm = load_llm()
+ # Create a chain combining the prompt template and LLM
+ rag_chain = prompt | llm | StrOutputParser()
+ context = " ".join(retrieved_docs[0]) if retrieved_docs else "No relevant documents found."
+ print("⌃⌃⌃⌃ Augmented Prompt ⌃⌃⌃⌃")
+
+ print("⌄⌄⌄⌄ Generation ⌄⌄⌄⌄")
+ response = rag_chain.invoke({"question": query, "context": context});
+ print(response)
+ print("⌃⌃⌃⌃ Generation ⌃⌃⌃⌃")
+
+ return response
diff --git a/app/streamlit_app.py b/app/streamlit_app.py
new file mode 100644
index 0000000..b8ec116
--- /dev/null
+++ b/app/streamlit_app.py
@@ -0,0 +1,9 @@
+import streamlit as st
+from app.rag_chain import get_rag_response
+
+st.title("RAG System")
+query = st.text_input("Ask a question:")
+if query:
+ response = get_rag_response(query)
+ st.write("### Response:")
+ st.write(response)
diff --git a/data/verint-responsible-ethical-ai.pdf b/data/verint-responsible-ethical-ai.pdf
new file mode 100644
index 0000000..e86985f
--- /dev/null
+++ b/data/verint-responsible-ethical-ai.pdf
@@ -0,0 +1,13137 @@
+%PDF-1.6
%
+1 0 obj
<>/OCGs[20 0 R 137 0 R 254 0 R]>>/Pages 3 0 R/Type/Catalog>>
endobj
2 0 obj
<>stream
+
+
+
+
+ Adobe PDF library 17.00
+ Adobe Illustrator 29.4 (Macintosh)
+ 2025-04-07T10:09:04+01:00
+ 2025-04-07T16:02:19+01:00
+ 2025-04-07T16:02:19+01:00
+
+
+
+ 256
+ 32
+ JPEG
+ /9j/4AAQSkZJRgABAgEAAAAAAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAAAAAAAAEA
AQAAAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK
DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f
Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAIAEAAwER
AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA
AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB
UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE
1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ
qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy
obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp
0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo
+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FUHrWpR6XpF7qMl
OFnBJOQe/pqWp9NMu0+E5ckYD+IgNWfKMcJTP8ItgOvecItD8h+W728sb3UGvrGFJHtLmS0CH0Y5
izyRuhDMU+Ejf7QGzEHM1MvD1OQCqE5fwiXUjr+OXcHG08ePBAm/oHUjoO78fMsk8v8An7QNT0i2
vrq+sbKW4Xl9WN2jFQTQbuIWr/sfvzXyAB2cyJNbptaeYtAvFlay1K1u/QQyzC3mSYqg/aIQsaZF
kkf5q+abnyp5C1PzDa2pvJ9ONvIlsHkj5VuYkNTGQ1AGqR0YbHYnLMUhGVkWPh+kH7mGSJIoGj+O
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
ytyHEUoTULQmvTfFX//Z
+
+
+
+ xmp.did:da36aeb5-2ee6-4887-aba2-66b993acfb4d
+ uuid:72f658bd-7057-3046-942f-0334798f2bf7
+ uuid:EFB6E92C-3180-453F-B95B-DA512E1F2707
+ proof:pdf
+
+ uuid:f1cb738b-e1ff-3c49-bc53-9b9e39bcda61
+ xmp.did:f7ea62f8-4abf-4e31-863d-cd5a42d6e17d
+ uuid:EFB6E92C-3180-453F-B95B-DA512E1F2707
+ default
+
+
+
+
+ saved
+ xmp.iid:f7ea62f8-4abf-4e31-863d-cd5a42d6e17d
+ 2025-04-07T10:08:45+01:00
+ Adobe Illustrator 29.4 (Macintosh)
+ /
+
+
+ saved
+ xmp.iid:da36aeb5-2ee6-4887-aba2-66b993acfb4d
+ 2025-04-07T10:08:57+01:00
+ Adobe Illustrator 29.4 (Macintosh)
+ /
+
+
+
+ application/pdf
+
+
+ Verint Responsible and Ethical AI Governing Principles
+
+
+
+
+ Scott.Lindsay@verint.com
+
+
+ 1
+ True
+ False
+
+ 215.900000
+ 279.400000
+ Millimeters
+
+
+
+
+ ArialMT
+ Arial
+ Regular
+ Open Type
+ Version 5.01.2x
+ False
+ Arial.ttf
+
+
+ Arial-ItalicMT
+ Arial
+ Italic
+ Open Type
+ Version 5.00.2x
+ False
+ Arial Italic.ttf
+
+
+ Arial-BoldMT
+ Arial
+ Bold
+ Open Type
+ Version 5.01.2x
+ False
+ Arial Bold.ttf
+
+
+ Wingdings-Regular
+ Wingdings
+ Regular
+ Open Type
+ Version 5.00x
+ False
+ Wingdings.ttf
+
+
+ CourierNewPSMT
+ Courier New
+ Regular
+ Open Type
+ Version 5.00.2x
+ False
+ Courier New.ttf
+
+
+ MyriadPro-Regular
+ Myriad Pro
+ Regular
+ Open Type
+ Version 2.106;PS 2.000;hotconv 1.0.70;makeotf.lib2.5.58329
+ False
+ MyriadPro-Regular.otf
+
+
+
+
+
+ Cyan
+ Magenta
+ Yellow
+ Black
+
+
+
+
+
+ Default Swatch Group
+ 0
+
+
+
+ Adobe Illustrator
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
endstream
endobj
3 0 obj
<>
endobj
5 0 obj
<>/ExtGState<>/Font<>/ProcSet[/PDF/Text/ImageC/ImageI]/Properties<>/XObject<>>>/Thumb 262 0 R/TrimBox[0.0 0.0 612.0 792.0]/Type/Page/PieceInfo<>>>
endobj
6 0 obj
<>/ExtGState<>/Font<>/ProcSet[/PDF/Text/ImageC/ImageI]/Properties<>/XObject<>>>/Thumb 269 0 R/TrimBox[0.0 0.0 612.0 792.0]/Type/Page/PieceInfo<>>>
endobj
7 0 obj
<>/ExtGState<>/Font<>/ProcSet[/PDF/Text/ImageC/ImageI]/Properties<>/XObject<>>>/Thumb 272 0 R/TrimBox[0.0 0.0 612.0 792.0]/Type/Page/PieceInfo<>>>
endobj
8 0 obj
<>/ExtGState<>/Font<>/ProcSet[/PDF/Text/ImageC/ImageI]/Properties<>/XObject<>>>/Thumb 276 0 R/TrimBox[0.0 0.0 612.0 792.0]/Type/Page/PieceInfo<>>>
endobj
9 0 obj
<>/ExtGState<>/Font<>/ProcSet[/PDF/Text/ImageC/ImageI]/Properties<>/XObject<>>>/Thumb 279 0 R/TrimBox[0.0 0.0 612.0 792.0]/Type/Page/PieceInfo<>>>
endobj
10 0 obj
<>/ExtGState<>/Font<>/ProcSet[/PDF/Text/ImageC/ImageI]/Properties<>/XObject<>>>/Thumb 284 0 R/TrimBox[0.0 0.0 612.0 792.0]/Type/Page/PieceInfo<>>>
endobj
11 0 obj
<>/ExtGState<>/Font<>/ProcSet[/PDF/Text/ImageC/ImageI]/Properties<>/XObject<>>>/Thumb 287 0 R/TrimBox[0.0 0.0 612.0 792.0]/Type/Page/PieceInfo<>>>
endobj
12 0 obj
<>/ExtGState<>/Font<>/ProcSet[/PDF/Text/ImageC/ImageI]/Properties<>/XObject<>>>/Thumb 290 0 R/TrimBox[0.0 0.0 612.0 792.0]/Type/Page/PieceInfo<>>>
endobj
13 0 obj
<>/ExtGState<>/Font<>/ProcSet[/PDF/Text/ImageC/ImageI]/Properties<>/XObject<>>>/Thumb 293 0 R/TrimBox[0.0 0.0 612.0 792.0]/Type/Page/PieceInfo<>>>
endobj
22 0 obj
<>/ExtGState<>/Font<>/ProcSet[/PDF/Text/ImageC/ImageI]/Properties<>/XObject<>>>/Thumb 296 0 R/TrimBox[0.0 0.0 612.0 792.0]/Type/Page/PieceInfo<>>>
endobj
294 0 obj
<>stream
+HWK۸W8[$:MWֹ{=ee$^n@xbW$~}x>Oٻ_߳ɷIQ%uM?'X*D45g-W}U7l<|إv/ۤʙ$+/&`kI6XT7_6wIp0)#qm}NelYfBJMŦeǤLODplU%țݬIIlܝVtùz\\?n"Avx>MOL/T<ɇ Si{Υu.k̃ᦻEx^*Ev֩[MU.qf$*2y{q-*V&|BW@$^
E
+o~]AyCf 8v%WhʛhB.k8@|}Z:=Xp@$۔;mh"qV͔Ht2Yw8{r6qnF3ѭPygx, >
+4T6:?`;$:b`M"{sEu<̻g@F[C*n@b,<)` <,'9ENq9'oІ+ɢE6Fɱ{d/Z}ygXb}ZJi1]g.B(d|
+ClA\9d0 ^`=G
+KtZ^7f8HjܐoqF86[,pTeeN6RHN9ٸX
0.-(&A'wS Wd,֔dꡈUhYjx9Q33A3QnvRg{,Cai`đ ϩfwM+Z7_)8sؓ
+`?_
g[/ #tn0HX8 Ǔ XuRpg7ݑ4;1 j\ֵؓVrjU:)/C<B|H^OBW);so鋤Tr|t+ͣ:CumrfZQ_lԞQTGu^~2Ub
Ed_<Ď2`42/$DE͊<Y^.|z O.L|^p"ƕ//Q"o[y`핡bu\w#i7Ʈ(OuAʲ]m]]A1-"^S#"'[=+C?J=BH+mc~x|M2%/8~Y]T58n&N#S}ɊRN̓P|:I?⬱ӋLPa9=bq%D90xՇ$( &b(>rT}"QogrtPpu7'})s*h2&$'0)kŶwTϲ3nG2xB͊ 5-.ؓ
U+6k0