A sample AI toolkit by Schogini Systems with Retrieval-Augmented Generation (RAG).
Project description
SchoginiAI
SchoginiAI is a sample AI toolkit developed by Schogini Systems that provides Retrieval-Augmented Generation (RAG) capabilities using LangChain and OpenAI. It leverages FAISS for efficient vector storage and retrieval, enabling advanced AI-driven solutions for small businesses and beyond.
๐ Features
- Recursive Text Chunking: Efficiently splits large text corpora into manageable chunks.
- OpenAI Embeddings: Utilizes OpenAI's embedding models for high-quality vector representations.
- FAISS Vector Store: Implements FAISS for fast similarity search and vector storage.
- Retrieval-Augmented Generation (RAG): Combines retrieval mechanisms with language models to generate informed responses.
- Dockerized Environment: Easily build and run in isolated Docker containers for consistency across environments.
- Environment Variable Management: Securely handles API keys and sensitive information using
.envfiles.
๐ Installation
๐ฆ From PyPI
Install the latest version of SchoginiAI directly from PyPI:
pip install SchoginiAI
๐งโ๐ป From Source
Clone the repository and install the package manually:
git clone https://github.com/yourusername/SchoginiAI.git
cd SchoginiAI
pip install .
Replace yourusername with your actual GitHub username.
๐ง Usage
๐ Environment Setup
Create a .env file in the examples02/ directory to store your OpenAI API key securely:
OPENAI_API_KEY=your_openai_api_key_here
โ ๏ธ Important: Do not commit the
.envfile to version control. Ensure it's listed in your.gitignore.
๐ Knowledge Creation
Build and save the vector store from your text corpus using the knowledge_creation.py script.
๐ Python Script
cd examples02
python knowledge_creation.py
๐ฆ Using Docker
Build the Docker image and run the container with the create argument to generate the vector store:
docker build --no-cache -t schogini-examples .
docker run --rm -e OPENAI_API_KEY="your_openai_api_key_here" schogini-examples create
Expected Output:
Running knowledge_creation.py...
Vector store saved to vector_store
โ Querying the Knowledge Base
Load the pre-built vector store and perform a query using the usage_example.py script.
๐ Python Script
cd examples02
python usage_example.py
๐ฆ Using Docker
Run the container with the query argument to perform the query:
docker run --rm -e OPENAI_API_KEY="your_openai_api_key_here" schogini-examples query
Expected Output:
Running usage_example.py...
Answer: Schogini Systems is a pioneer in AI Chatbots.
We specialize in automation solutions for small businesses.
๐ณ Docker Usage
๐ Build the Docker Image
Navigate to the project root directory (where the Dockerfile is located) and build the Docker image:
docker build --no-cache -t schogini-examples .
๐ Run the Docker Container
1. Create Vector Store
docker run --rm -e OPENAI_API_KEY="your_openai_api_key_here" schogini-examples create
2. Query Vector Store
docker run --rm -e OPENAI_API_KEY="your_openai_api_key_here" schogini-examples query
Note: Replace
"your_openai_api_key_here"with your actual OpenAI API key.
๐ Scripts Overview
๐ knowledge_creation.py
Handles the creation and saving of the vector store from the provided text corpus.
from SchoginiAI import SchoginiAIRAG
import os
from dotenv import load_dotenv
# Load .env contents
load_dotenv()
api_key = os.getenv("OPENAI_API_KEY", "fallback_value")
# Your text corpus
sample_text = """
Schogini Systems is a pioneer in AI Chatbots.
We specialize in automation solutions for small businesses.
"""
# Directory to save the vector store
vector_store_dir = "vector_store"
# Create RAG instance
rag_ai = SchoginiAIRAG(openai_api_key=api_key)
# Build the vector store from text
rag_ai.build_vector_store(sample_text)
# Save the vector store to disk
rag_ai.save_vector_store(vector_store_dir)
๐ usage_example.py
Loads the pre-built vector store and performs a query.
from SchoginiAI import SchoginiAIRAG
import os
from dotenv import load_dotenv
# Load .env contents
load_dotenv()
api_key = os.getenv("OPENAI_API_KEY", "fallback_value")
# Directory where the vector store is saved
vector_store_dir = "vector_store"
# Create RAG instance
rag_ai = SchoginiAIRAG(openai_api_key=api_key)
# Load the vector store from disk
rag_ai.load_vector_store(vector_store_dir)
# Ask a question
answer = rag_ai.ask_question("What does Schogini Systems do?")
print("Answer:", answer)
๐ฆ Dependencies
SchoginiAI relies on the following Python packages:
langchain>=0.0.200,<0.1.0langchain-community>=0.0.20,<0.1.0openai>=0.28.1,<0.29.0tiktoken>=0.4.0,<0.5.0faiss-cpu>=1.7.6,<1.8.0python-dotenv>=0.21.0,<0.22.0
These dependencies are automatically installed when you install SchoginiAI via pip or using requirements.txt in Docker.
๐ requirements.txt
langchain>=0.0.200,<0.1.0
langchain-community>=0.0.20,<0.1.0
openai>=0.28.1,<0.29.0
tiktoken>=0.4.0,<0.5.0
faiss-cpu>=1.7.6,<1.8.0
python-dotenv>=0.21.0,<0.22.0
๐ณ Docker Configuration
๐ Dockerfile
# Use a lightweight Python base image
FROM python:3.11-slim
# Install bash (required for your script)
RUN apt-get update && apt-get install -y bash && rm -rf /var/lib/apt/lists/*
# Set environment variables for Python
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
# Create and set the working directory
WORKDIR /app/examples02
# Copy requirements first for better Docker caching
COPY requirements.txt .
# Install Python dependencies
RUN pip install --no-cache-dir -r requirements.txt
# Copy the rest of the project into the container
COPY . /app
# Install the local SchoginiAI package
RUN pip install ..
# Make sure the scripts are executable
RUN chmod +x doit.sh
# Use bash as the entrypoint
ENTRYPOINT ["/bin/bash"]
# Default command: run doit.sh without arguments
CMD ["./doit.sh"]
๐ doit.sh
Handles the execution of either the knowledge creation or querying scripts based on input arguments.
#!/bin/bash
set -e # Exit immediately if a command exits with a non-zero status
# Check if a script name is provided
if [ "$#" -ne 1 ]; then
echo "Usage: $0 {create|query}"
exit 1
fi
SCRIPT=$1
if [ "$SCRIPT" == "create" ]; then
echo "Running knowledge_creation.py..."
python knowledge_creation.py
elif [ "$SCRIPT" == "query" ]; then
echo "Running usage_example.py..."
python usage_example.py
else
echo "Invalid argument. Use 'create' or 'query'."
exit 1
fi
Usage Examples:
Create Vector Store:
docker run --rm -e OPENAI_API_KEY="your_openai_api_key_here" schogini-examples createQuery Vector Store:
docker run --rm -e OPENAI_API_KEY="your_openai_api_key_here" schogini-examples query
๐ Project Structure
SchoginiAI/
โโโ SchoginiAI/
โ โโโ __init__.py
โ โโโ main.py
โโโ examples02/
โ โโโ usage_example.py
โ โโโ knowledge_creation.py
โ โโโ .env
โโโ tests/
โ โโโ test_main.py
โโโ .gitignore
โโโ LICENSE
โโโ README.md
โโโ requirements.txt
โโโ setup.py
โโโ Dockerfile
โโโ doit.sh
โโโ build.sh
๐ก License
This project is licensed under the MIT License. See the LICENSE file for details.
๐ Contributing
Contributions are welcome! Please open an issue or submit a pull request for any improvements or bug fixes.
- Fork the repository.
- Create your feature branch:
git checkout -b feature/YourFeature - Commit your changes:
git commit -m 'Add some feature' - Push to the branch:
git push origin feature/YourFeature - Open a pull request.
๐ .gitignore
Ensure you have a .gitignore file to exclude unnecessary or sensitive files from your GitHub repository.
# Python
__pycache__/
*.py[cod]
# Distribution / packaging
build/
dist/
*.egg-info/
# Environment
venv/
.env/
# OS generated files
.DS_Store
# IDE configs
.vscode/
.idea/
# Secrets
.pypirc
.env
๐ Additional Resources
By following this guide, you can efficiently set up, develop, and deploy the SchoginiAI toolkit, leveraging the power of LangChain, OpenAI, and FAISS for advanced AI-driven solutions.
Feel free to reach out if you encounter any issues or need further assistance!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file schoginiai-0.1.5.tar.gz.
File metadata
- Download URL: schoginiai-0.1.5.tar.gz
- Upload date:
- Size: 6.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.11.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
43700e7a4b3382595240891c199c391667993d6b4b5dffe019f26b0b2a116bc3
|
|
| MD5 |
dd213ad6a7cf354fa3a9dc1ade150644
|
|
| BLAKE2b-256 |
475f010cdcc19bf0cdb58ce3ef1f960e507cd63a4d2af1f3470049370f4e2700
|
File details
Details for the file SchoginiAI-0.1.5-py3-none-any.whl.
File metadata
- Download URL: SchoginiAI-0.1.5-py3-none-any.whl
- Upload date:
- Size: 6.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.11.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
14d0482e3d64df5ae61e59099c5be94817f1245f85c80bd352f4e0fb77e97379
|
|
| MD5 |
d09b193d22179d1b02a962abca3ed3a7
|
|
| BLAKE2b-256 |
63faa11d6786d5f4546b882d6915b12b7b643bbe3f0d038bca9360811d6ac61e
|