From 3f7831ce7d3b37459f6da8ee48b5d41b097efa9d Mon Sep 17 00:00:00 2001
From: Sumana Sree Angajala <110307215+sumana-2705@users.noreply.github.com>
Date: Sat, 19 Jul 2025 16:52:45 +0530
Subject: [PATCH 1/5] Update README.md
Signed-off-by: Sumana Sree Angajala <110307215+sumana-2705@users.noreply.github.com>
---
README.md | 175 +++++++-----------------------------------------------
1 file changed, 22 insertions(+), 153 deletions(-)
diff --git a/README.md b/README.md
index e27dad7..9327f7a 100644
--- a/README.md
+++ b/README.md
@@ -1,164 +1,33 @@
-# DEV Branch: Hyperledger Labs AIFAQ prototype
+# Snowflake Branch: Hyperledger Labs AIFAQ prototype
-The scope of this Hyperledger Labs project is to support the users (users, developer, etc.) to their work, avoiding to wade through oceans of documents to find information they are looking for. We are implementing an open source conversational AI tool which replies to the questions related to specific context. This is a prototype which allows to create a chatbot running a RESTful API which requires GPU. Here the official Wiki pages: [Hyperledger Labs aifaq](https://labs.hyperledger.org/labs/aifaq.html) and [Hyperledger Labs wiki](https://wiki.hyperledger.org/display/labs/AI+FAQ). Please, read also the [Antitrust Policy and the Code of Conduct](https://wiki.hyperledger.org/pages/viewpage.action?pageId=41587043). Every Monday we have a public meeting and the invitation is on the Hyperledger Labs calendar: [[Hyperledger Labs] FAQ AI Lab calls](https://wiki.hyperledger.org/display/HYP/Calendar+of+Public+Meetings).
+
+
+
+
-## Background
+[](https://github.com/hyperledger-labs/aifaq/stargazers)
+[](https://github.com/hyperledger-labs/aifaq/network/members)
+[](https://github.com/hyperledger-labs/aifaq)
+[](https://github.com/hyperledger-labs/aifaq/issues)
+[](https://github.com/hyperledger-labs/aifaq/pulls)
-The system is an open source python project which implements an AI chatbot that replies to HTTP requests. The idea is to implement an open source framework/template, as example, for other communities/organizations/companies. Last results in open LLMs allow to have good performance using common HW resources.\
-Below the application architecture:
+
+
+
+
-
+---
+## π Overview
-We use RAG (Retrieval Augmented Generation [arxiv.org](https://arxiv.org/abs/2312.10997)) for question answering use case. That technique aims to improve LLM answers by incorporating knowledge from external database (e.g. vector database).
+sdfsfs
-The image depicts two workflow:
+π Official Wiki Pages:
-1. The data ingestion workflow
-2. The chat workflow
+- [Hyperledger Labs Wiki](https://lf-hyperledger.atlassian.net/wiki/spaces/labs/pages/20290949/AI+FAQ+2025)
-During the ingestion phase, the system loads context documents and creates a vector database. For example, the document sources can be:
+π Weekly Community Calls:
-- An online software guide (readthedocs template)
-- The GitHub issues and pull requests
+- Every Monday (public) β join via [Hyperledger Labs Calendar](https://wiki.hyperledger.org/display/HYP/Calendar+of+Public+Meetings).
-In our case, they are the readthedocs guide and a wiki page.\
-After the first phase, the system is ready to reply to user questions.
+---
-Currently, we use the open source [HuggingFace Zephyr-7b-beta](https://huggingface.co/HuggingFaceH4/zephyr-7b-beta), and in the future we want to investigate other open source models.\
-The user can query the system using HTTP requests, but we want to supply UI samples, as external module.
-
-## Open Source Version
-
-The software is under Apache 2.0 License (please check **LICENSE** and **NOTICE** files included). We use some 3rd party libraries: here is the [ASF 3rd Party License Policy](https://www.apache.org/legal/resolved.html) and here is the information for ([Assembling LICENSE and NOTICE files](https://infra.apache.org/licensing-howto.html#mod-notice)).
-
-## Installation
-
-**This document does not contain commercial advertisement: all the tools/products/books/materials are generic and you have to consider those as examples!**\
-This software needs GPU for the execution: if you do not have a local GPU you could use a Cloud GPU. There are several solutions to use Cloud GPU:
-
-1. Cloud Provider (AWS, GCP, ...)
-2. On-Demand GPU Cloud (vast.ai, RunPod, ...)
-3. Cloud GPU IDE
-
-Currently, I use a Cloud GPU IDE ([Lightning Studio](https://lightning.ai/studios)), after signup/login, create new Studio (project):
-
-
-
-select the left solution:
-
-
-
-click on the **Start** button, and rename the new Studio:
-
-
-
-Then, and copy-paste the github api repo code:
-
-
-
-and create two folders:
-
-1. chromadb (it will contains vector database files)
-2. rtdocs (it will contains the ReadTheDocs documentation)
-
-That version works with Hyperledger fabric documents (Wiki and ReadTheDocs).
-
-## Usage
-
-### Download ReadTheDocs documentation
-
-Open a new terminal:
-
-
-
-and download the documentation executing the command below:
-
-```console
-wget -r -A.html -P rtdocs https://hyperledger-fabric.readthedocs.io/en/release-2.5/
-
-```
-
-actually, after a minute we can interrupt (CTRL + C) because it starts to download previous versions:
-
-
-
-Now, we can move into rtdocs folder and move the **release-2.5** content to **rtdocs**. We need to compress the content of the folder, moving there and use that command:
-
-
-
-and move the readthedocs.tar.gz to the parent directory (../):
-
-```console
-- mv readthedocs.tar.gz ..
-- cd ..
-```
-
-repeating the two commands until we are into rtdocs folder:
-
-
-
-now remove hyperledger⦠folder and the content:
-
-
-
-uncompress the file here and remove compress file:
-
-```console
-- tar -xzvf rtdocs.tar.gz
-- rm rtdocs.tar.gz
-```
-
-### Install requirements
-
-Move to the parent folder and execute the command below:
-
-```console
-pip install -r requirements.txt
-```
-
-### Activate GPU
-
-After the requirements installation we can switch to GPU before to execute the ingestion script:
-
-
-
-then select the L4 solution:
-
-
-
-and confirm (it takes some minutes).
-
-### Ingest step
-
-Run the ingest.py script:
-
-
-
-it will create content in chromadb folder.
-
-### Run API
-
-Now, we can run the API and test it. So, run api.py script:
-
-
-
-and test it:
-
-```console
-curl --header "Content-Type: application/json" --request POST --data '{"text": "How to install Hyperledger fabric?"}' http://127.0.0.1:8080/query
-```
-
-below the result:
-
-
-
-## Current version notes
-
-That is a proof-of-concept: a list of future improvement below:
-
-1. This is the first version of the prototype and it will be installed on a GPU Cloud Server
-2. At the same time, we'd like to pass to the next step: the Hyperledger Incubation Stage
-3. We will investigate other open source models
-4. Evaluation of the system using standard metrics
-5. We would like to improve the system, some ideas are: fine-tuning, Advanced RAG, Decomposed LoRA
-6. Add "guardrails" which are a specific ways of controlling the output of a LLM, such as talking avoid specific topics, responding in a particular way to specific user requests, etc.
\ No newline at end of file
From 130a9d0f6eb13b15cfa6f017cfeb0f019b30bb7f Mon Sep 17 00:00:00 2001
From: Sumana Sree Angajala <110307215+sumana-2705@users.noreply.github.com>
Date: Sat, 19 Jul 2025 21:55:02 +0530
Subject: [PATCH 2/5] Update README.md
Signed-off-by: Sumana Sree Angajala <110307215+sumana-2705@users.noreply.github.com>
---
README.md | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 9327f7a..0a9c1b1 100644
--- a/README.md
+++ b/README.md
@@ -19,7 +19,7 @@
---
## π Overview
-sdfsfs
+The **Hyperledger Labs AIFAQ Prototype** is an open-source conversational AI tool designed to answer questions from technical documentation, FAQs, and internal knowledge bases with high accuracy and context awareness. This implementation of AIFAQ integrates deeply with **Snowflake**, providing secure multi-user support, persistent chat history, and access to powerful LLMs like OpenAI, Anthropic, and Snowflake Cortex.
π Official Wiki Pages:
@@ -30,4 +30,16 @@ sdfsfs
- Every Monday (public) β join via [Hyperledger Labs Calendar](https://wiki.hyperledger.org/display/HYP/Calendar+of+Public+Meetings).
---
+## Features
+
+- User Authentication: Secure, multi-user access with isolated document and chat histories
+- LLM Integration: Seamless access to Cortex, OpenAI, and Anthropic models via Snowflake external functions
+- Multi-Document Support: Upload and query multiple documents per session
+- Persistent Chat History: Retrieve and continue conversations across sessions
+- Streamlit UI: Intuitive document upload and chat interface
+
+---
+## π οΈ Architecture
+
+
From 2efeecff6344e51c6fd3e608c71849edc9e3ecca Mon Sep 17 00:00:00 2001
From: Sumana Sree Angajala <110307215+sumana-2705@users.noreply.github.com>
Date: Sat, 19 Jul 2025 21:56:39 +0530
Subject: [PATCH 3/5] added snowflake architecture image
Signed-off-by: Sumana Sree Angajala <110307215+sumana-2705@users.noreply.github.com>
---
snowflake-architecture.png | Bin 0 -> 197549 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 snowflake-architecture.png
diff --git a/snowflake-architecture.png b/snowflake-architecture.png
new file mode 100644
index 0000000000000000000000000000000000000000..4008ced2e3cbf6b94efa0d31c769a51a0b29bea2
GIT binary patch
literal 197549
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