{"id":50412341,"url":"https://github.com/cskwork/rag-langchain","last_synced_at":"2026-05-31T04:04:57.152Z","repository":{"id":305624525,"uuid":"1020703068","full_name":"cskwork/rag-langchain","owner":"cskwork","description":"conversational RAG system, this chatbot turns any document into a command-driven assistant that remembers multi-threaded chat history, retrieves context-aware answers via Chroma vector storage and LangGraph flow, and persists conversations for seamless follow-ups","archived":false,"fork":false,"pushed_at":"2025-07-21T05:30:22.000Z","size":136,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-21T07:19:59.196Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cskwork.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-16T09:10:32.000Z","updated_at":"2025-07-17T17:11:02.000Z","dependencies_parsed_at":"2025-07-21T07:21:46.626Z","dependency_job_id":"d67fe644-45ab-42b8-a687-2e0e1f97a09a","html_url":"https://github.com/cskwork/rag-langchain","commit_stats":null,"previous_names":["cskwork/rag-langchain"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/cskwork/rag-langchain","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cskwork%2Frag-langchain","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cskwork%2Frag-langchain/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cskwork%2Frag-langchain/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cskwork%2Frag-langchain/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cskwork","download_url":"https://codeload.github.com/cskwork/rag-langchain/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cskwork%2Frag-langchain/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33718496,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-31T02:00:06.040Z","response_time":95,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-05-31T04:04:55.846Z","updated_at":"2026-05-31T04:04:57.147Z","avatar_url":"https://github.com/cskwork.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RAG ChatBot with Chat History\n\nA conversational RAG (Retrieval Augmented Generation) system that remembers your conversation history and provides contextual answers from documents.\n\n## 🎯 What It Does\n\nTransform any document into an intelligent chatbot that:\n- **Remembers conversations**: Maintains context across multiple questions\n- **Answers from documents**: Retrieves relevant information to answer your questions\n- **Interactive chat**: Real-time conversation with command support\n- **Persistent storage**: Saves chat history using Chroma vector database\n\n## 🚀 Quick Start\n\n1. **Install dependencies**:\n```bash\npnpm install\n```\n\n2. **Set up environment**:\n```bash\ncp env.example .env\n```\n\n3. **Add your API keys** to `.env`:\n```env\nOPENROUTER_API_KEY=your_openrouter_key_here\nOPENAI_API_KEY=your_openai_key_here\n```\n\n4. **Start chatting**:\n```bash\n# Interactive chat mode\npnpm start --interactive\n\n# Sample questions mode\npnpm start\n\n# Streaming answers\npnpm start --streaming\n```\n\n## 💬 Usage Examples\n\n### Interactive Chat\n```bash\n$ pnpm start --interactive\n\n💬 You: What is task decomposition?\n🤖 Assistant: Task decomposition is the process of breaking down complex tasks into smaller, manageable steps...\n\n💬 You: Can you give me an example?\n🤖 Assistant: Based on our previous discussion about task decomposition, here's an example...\n```\n\n### Available Commands\n- `/help` - Show available commands\n- `/reset` - Start a new conversation\n- `/history` - View conversation history\n- `/threads` - Show all conversation threads\n- `/switch \u003cthread_id\u003e` - Switch to different conversation\n- `/summary` - Generate conversation summary\n- `/exit` - Exit the chat\n\n## 🏗️ Architecture\n\nThe system uses a **conversational StateGraph** approach:\n\n```\nUser Input → Query Reformulation → Document Retrieval → \nContextual Response → Chat History Storage\n```\n\n**Key Components:**\n- **Chroma Vector Database**: Stores documents and embeddings\n- **LangGraph StateGraph**: Manages conversation flow\n- **Chat History Manager**: Handles conversation persistence\n- **OpenRouter Integration**: LLM and embedding models\n\n## 📁 Project Structure\n\n```\nrag-langchain/\n├── src/\n│   ├── wrappers/\n│   │   ├── chroma-wrapper.js       # Chroma database wrapper\n│   │   └── embeddings-openai.js    # OpenAI embeddings wrapper\n│   ├── chat-history.js             # Conversation management\n│   ├── interactive-chat.js         # CLI chat interface\n│   ├── rag.js                      # Main RAG system\n│   └── config.js                   # Configuration\n├── index.js                        # Entry point\n└── README.md\n```\n\n## ⚙️ Configuration\n\nEdit `src/config.js` to customize:\n\n- **Models**: Change LLM and embedding models\n- **Chroma Settings**: Database configuration\n- **Chat History**: Conversation persistence options\n- **Prompts**: System prompts in Korean/English\n\n## 🔧 Use Cases\n\n### 1. Document Q\u0026A Chatbot\n- Load company documents, manuals, or knowledge bases\n- Create an interactive assistant that answers questions\n- Maintain conversation context for follow-up questions\n\n### 2. Customer Support Assistant\n- Upload FAQ documents and product manuals\n- Provide contextual customer support\n- Remember previous conversation for better assistance\n\n### 3. Research Assistant\n- Load research papers or articles\n- Ask complex questions with follow-ups\n- Generate summaries of long conversations\n\n### 4. Personal Knowledge Base\n- Store personal documents and notes\n- Create a conversational interface to your knowledge\n- Search and retrieve information naturally\n\n## 🎨 Customization Examples\n\n### Add New Document Loaders\n```javascript\n// Add PDF loader\nimport { PDFLoader } from \"@langchain/community/document_loaders/fs/pdf\";\n\n// Add to RAGSystem class\nasync loadPDF(filePath) {\n  const loader = new PDFLoader(filePath);\n  return await loader.load();\n}\n```\n\n### Custom Chat Commands\n```javascript\n// Add to interactive-chat.js\ncase '/export':\n  await this.exportConversation();\n  break;\n```\n\n### Connect to External Chroma Server\n```env\nCHROMA_USE_LOCAL_DB=false\nCHROMA_HOST=your-chroma-server.com\nCHROMA_PORT=8000\n```\n\n## 🛠️ Models\n\n**Default Models:**\n- **LLM**: `moonshotai/kimi-k2:free` (via OpenRouter)\n- **Embeddings**: `text-embedding-3-small` (via OpenAI)\n\n**Change Models:**\n```env\nLLM_MODEL=anthropic/claude-3-haiku\nEMBEDDING_MODEL=text-embedding-3-large\n```\n\n## 🐛 Common Issues\n\n**\"Better SQLite3 bindings not found\"**\n- Conversation persistence will fallback to memory storage\n- Install build tools: `pnpm add --dev node-gyp`\n\n**\"Chroma client initialization failed\"**\n- Using memory-based vector store as fallback\n- Works normally with in-memory storage\n\n**\"API key issues\"**\n- Ensure both OpenRouter and OpenAI keys are set\n- Check API key validity and credits\n\n## 📚 Advanced Features\n\n### Conversation Management\n- **Thread Support**: Multiple conversation threads\n- **Persistence**: SQLite-based chat history storage\n- **Context Awareness**: Query reformulation based on chat history\n- **Summarization**: Auto-generate conversation summaries\n\n### Vector Database\n- **Chroma Integration**: Production-ready vector storage\n- **Similarity Search**: Efficient document retrieval\n- **Embeddings**: High-quality text embeddings\n- **Fallback**: Memory storage for development\n\n## 🎉 Getting Started Tips\n\n1. **Start with interactive mode** to experience the conversational flow\n2. **Try follow-up questions** to see context awareness in action\n3. **Use `/help`** to explore available commands\n4. **Experiment with different document URLs** in the config\n5. **Check conversation history** with `/history` command\n\n---\n\n**Ready to chat with your documents? 🚀**\n\n```bash\npnpm start --interactive\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcskwork%2Frag-langchain","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcskwork%2Frag-langchain","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcskwork%2Frag-langchain/lists"}