Chat with documents using LLM

This is a Bellingcat hackathon submission

Team Members

Radu Ciocan - code

Ana State - design

Tool Description

A chat interface that allows users to upload PDF/DOCX documents and and chat with them using ChatGPT as the large language model.

demo.mp4

Installation

  1. Make sure you ave installed Node v18 or later
  2. Download the tool's repository using the command:
git clone git@github.com:ciocan/langchain-chat-with-documents.git
  1. Move to the tool's directory and install the tool
cd langchain-chat-with-documents
npm install
  1. Copy the .env.example into .env file and add the following variables:
WEAVIATE_HOST= # do not use https:// just the domain like bellingcat-xxx.weaviate.network
WEAVIATE_API_KEY=

# cloudflare r2
CLOUDFLARE_ACCOUNT_ID=
CLOUDFLARE_SECRET_KEY=
CLOUDFLARE_SECRET_ACCESS_KEY=

# open ai key
OPENAI_API_KEY=

Weaviate is an open source vector database where the documents are vectorized and indexed. You can install it locally or use their free cloud.

Cloudflare R2 is a object storage solution compatible with AWS S3. They have a free tier of 10gb. More info

Signup for an OpenAI API key here

  1. Start the tool
npm run dev

Tech Stack

This is a T3 Stack project bootstrapped with create-t3-app.

Additional libraries:

  • Zustand - Used for state management
  • Mantine UI - Used for awesome UI components
  • LangChain - Used for interacting with the LLM model (OpenAI)

High Level Architecture

architecture