basic structure setup
This commit is contained in:
parent
0ba46dad75
commit
95f8488227
9 changed files with 200 additions and 2 deletions
47
.env
Normal file
47
.env
Normal file
|
|
@ -0,0 +1,47 @@
|
||||||
|
|
||||||
|
################################
|
||||||
|
# General Settings
|
||||||
|
################################
|
||||||
|
LOGGING_LEVEL=DEBUG
|
||||||
|
|
||||||
|
|
||||||
|
################################
|
||||||
|
# Object Storage Settings
|
||||||
|
################################
|
||||||
|
|
||||||
|
# NOTE! MinIO requires an key at least consisting of 8 chars for the secret key
|
||||||
|
S3_ENDPOINT=http://localhost:9000
|
||||||
|
S3_ACCESS_KEY=admin
|
||||||
|
S3_SECRET_KEY=secret-admin-key
|
||||||
|
BUCKET_NAME=rag-bucket
|
||||||
|
|
||||||
|
|
||||||
|
################################
|
||||||
|
# Vector DB Settings
|
||||||
|
################################
|
||||||
|
|
||||||
|
VECTOR_STORE_ENDPOINT=localhost
|
||||||
|
VECTOR_STORE_PORT=9200
|
||||||
|
|
||||||
|
OPENSEARCH_USE_SSL=True
|
||||||
|
|
||||||
|
|
||||||
|
################################
|
||||||
|
# LLM Settings
|
||||||
|
################################
|
||||||
|
|
||||||
|
# Which LLm to use
|
||||||
|
LLM_OPTION=ollamallm
|
||||||
|
|
||||||
|
# LLM_API_ENDPOINT=http://<ip-of-ollama-instance>:11434
|
||||||
|
LLM_API_ENDPOINT=http://127.0.0.1:11434
|
||||||
|
|
||||||
|
# if required for you llm setup (for self hosted ollama not needed)
|
||||||
|
LLM_API_KEY=placeholder
|
||||||
|
|
||||||
|
# valid Language options - "en" "de" "multi"
|
||||||
|
LLM_LANGUAGE=de
|
||||||
|
|
||||||
|
# LLM Model to be used - "mistral", "phi3", "llama3", etc.
|
||||||
|
LLM_MODEL_NAME=mistral
|
||||||
|
|
||||||
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
.vscode
|
||||||
24
README.md
24
README.md
|
|
@ -1,3 +1,23 @@
|
||||||
# rag-chat
|
# RAG-Chat
|
||||||
|
|
||||||
Chat with your Documents/Knowledgebase
|
Chat with your Documents/Knowledgebase
|
||||||
|
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
Clone the repo, enter it and run:
|
||||||
|
|
||||||
|
```
|
||||||
|
podman-compose -f docker-compose.yaml up
|
||||||
|
```
|
||||||
|
|
||||||
|
## Structure
|
||||||
|
|
||||||
|
### Object Storage
|
||||||
|
* Minio (http://localhost:9001/)
|
||||||
|
|
||||||
|
### Vector Storage
|
||||||
|
* OpenSearch (Dashboard under: http://localhost:5601/)
|
||||||
|
|
||||||
|
### RAG-Backend
|
||||||
|
* API-Docs http://localhost:8000/docs
|
||||||
|
|
|
||||||
67
docker-compose.yaml
Normal file
67
docker-compose.yaml
Normal file
|
|
@ -0,0 +1,67 @@
|
||||||
|
version: '3.4'
|
||||||
|
services:
|
||||||
|
opensearch-node:
|
||||||
|
image: docker.io/opensearchproject/opensearch:2.11.1
|
||||||
|
container_name: opensearch-node
|
||||||
|
environment:
|
||||||
|
- discovery.type=single-node
|
||||||
|
- bootstrap.memory_lock=true
|
||||||
|
- "OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx2g"
|
||||||
|
ports:
|
||||||
|
- 9200:9200
|
||||||
|
- 9300:9300
|
||||||
|
networks:
|
||||||
|
- rag
|
||||||
|
volumes:
|
||||||
|
- opensearch-data:/usr/share/opensearch/data
|
||||||
|
|
||||||
|
opensearch-dashboards:
|
||||||
|
image: docker.io/opensearchproject/opensearch-dashboards:2.11.1
|
||||||
|
container_name: opensearch-dashboards
|
||||||
|
ports:
|
||||||
|
- 5601:5601
|
||||||
|
expose:
|
||||||
|
- "5601"
|
||||||
|
environment:
|
||||||
|
OPENSEARCH_HOSTS: 'https://opensearch-node:9200'
|
||||||
|
networks:
|
||||||
|
- rag
|
||||||
|
|
||||||
|
minio:
|
||||||
|
container_name: minio
|
||||||
|
image: docker.io/minio/minio
|
||||||
|
ports:
|
||||||
|
- "9000:9000"
|
||||||
|
- "9001:9001"
|
||||||
|
volumes:
|
||||||
|
- minio_storage:/data
|
||||||
|
- ./init-scripts:/docker-entrypoint-initdb.d
|
||||||
|
environment:
|
||||||
|
MINIO_ROOT_USER: ${S3_ACCESS_KEY}
|
||||||
|
MINIO_ROOT_PASSWORD: ${S3_SECRET_KEY}
|
||||||
|
command: server --console-address ":9001" /data
|
||||||
|
networks:
|
||||||
|
- rag
|
||||||
|
|
||||||
|
backend:
|
||||||
|
container_name: rag-chat-backend
|
||||||
|
build:
|
||||||
|
context: ./rag-chat-backend
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
image: rag-chat-backend:0.1
|
||||||
|
ports:
|
||||||
|
- "8000:8000"
|
||||||
|
environment:
|
||||||
|
- VECTOR_STORE_ENDPOINT=opensearch-node
|
||||||
|
- S3_ENDPOINT=http://minio:9000
|
||||||
|
env_file:
|
||||||
|
- .env
|
||||||
|
networks:
|
||||||
|
- rag
|
||||||
|
networks:
|
||||||
|
rag: {}
|
||||||
|
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
opensearch-data:
|
||||||
|
minio_storage: {}
|
||||||
15
rag-chat-backend/Dockerfile
Normal file
15
rag-chat-backend/Dockerfile
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
FROM python:3.10-slim
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
COPY ./requirements.txt /app
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install -y build-essential
|
||||||
|
RUN pip install --upgrade pip
|
||||||
|
RUN pip install -r requirements.txt
|
||||||
|
|
||||||
|
EXPOSE 8000
|
||||||
|
|
||||||
|
COPY . /app
|
||||||
|
|
||||||
|
CMD ["python", "src/app.py"]
|
||||||
11
rag-chat-backend/requirements.txt
Normal file
11
rag-chat-backend/requirements.txt
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
uvicorn==0.22.0
|
||||||
|
fastapi==0.109.1
|
||||||
|
|
||||||
|
minio==7.1.17
|
||||||
|
|
||||||
|
opensearch-py==2.3.2
|
||||||
|
opensearch-logger==1.3.0
|
||||||
|
|
||||||
|
python-dotenv==1.0.0
|
||||||
|
python-multipart==0.0.7
|
||||||
|
PyPDF2==3.0.1
|
||||||
0
rag-chat-backend/src/__init__.py
Normal file
0
rag-chat-backend/src/__init__.py
Normal file
30
rag-chat-backend/src/app.py
Normal file
30
rag-chat-backend/src/app.py
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
"""FastAPI Backend"""
|
||||||
|
|
||||||
|
import uvicorn
|
||||||
|
import os
|
||||||
|
|
||||||
|
from fastapi import FastAPI
|
||||||
|
from fastapi.middleware.cors import CORSMiddleware
|
||||||
|
from dotenv import load_dotenv
|
||||||
|
|
||||||
|
from core.config import settings
|
||||||
|
|
||||||
|
load_dotenv()
|
||||||
|
app = FastAPI()
|
||||||
|
|
||||||
|
app.add_middleware(
|
||||||
|
CORSMiddleware,
|
||||||
|
allow_origins=["*"],
|
||||||
|
allow_credentials=True,
|
||||||
|
allow_methods=["*"],
|
||||||
|
allow_headers=["*"],
|
||||||
|
)
|
||||||
|
|
||||||
|
print('OPENSEARCH_USE_SSL')
|
||||||
|
print(os.getenv('OPENSEARCH_USE_SSL'))
|
||||||
|
print('settings.API_V1_STR')
|
||||||
|
print(settings.API_V1_STR)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
uvicorn.run("app:app", host="0.0.0.0", port=8000, reload=True)
|
||||||
7
rag-chat-backend/src/core/config.py
Normal file
7
rag-chat-backend/src/core/config.py
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
# config.py
|
||||||
|
|
||||||
|
class Settings:
|
||||||
|
API_V1_STR: str = "/api"
|
||||||
|
|
||||||
|
|
||||||
|
settings = Settings()
|
||||||
Loading…
Add table
Add a link
Reference in a new issue