From f3c20fd61993bda27d49df9d96be9a4b29b3c892 Mon Sep 17 00:00:00 2001 From: jrodriiguezg Date: Sat, 15 Aug 2026 15:16:53 +0200 Subject: [PATCH] Subir archivos a "/" --- index.html | 102 ++++++++++++++++++++ styles.css | 267 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 369 insertions(+) create mode 100644 index.html create mode 100644 styles.css diff --git a/index.html b/index.html new file mode 100644 index 0000000..f9edc17 --- /dev/null +++ b/index.html @@ -0,0 +1,102 @@ + + + + + + SRag | Efficient Retrieval-Augmented Generation + + + + + + + + + + +
+ +
+
AI / RAG Architecture
+

SRag

+

A modern, lightweight implementation for Retrieval-Augmented Generation. SRag streamlines the connection between your document embeddings and Large Language Models.

+ + +
+ +
+ +
+

How it Works

+
+
+

SRag simplifies the vectorization pipeline. It ingests your data, creates optimized embeddings, and provides a clean API for semantic retrieval.

+
    +
  • Ingestion Engine: Automatically parses text, PDFs, and Markdown files into manageable chunks.
  • +
  • Vectorization: Generates dense embeddings optimized for rapid semantic search.
  • +
  • Query Router: Intercepts user prompts, retrieves relevant context, and augments the LLM input seamlessly.
  • +
+
+ +
+import os +from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, Settings +from llama_index.llms.ollama import Ollama +from llama_index.embeddings.ollama import OllamaEmbedding + +# Setup local models via Ollama +Settings.llm = Ollama(model="qwen2.5:7b", request_timeout=120.0) +Settings.embed_model = OllamaEmbedding(model_name="nomic-embed-text") + +# Load documents and generate vector index +documents = SimpleDirectoryReader("docs").load_data() +index = VectorStoreIndex.from_documents(documents) + +# Initialize strict context-based chat engine +chat_engine = index.as_chat_engine( + chat_mode="context", + similarity_top_k=20, + verbose=False +) +
+
+ +
+

Core Architecture

+
+
+

Embeddings

+

Support for local models via HuggingFace or external APIs like OpenAI.

+
+
+

Vector DB

+

Lightweight and in-memory persistent storage for ultra-fast document retrieval.

+
+
+

LLM Agnostic

+

Compatible with Ollama for local inference or any standard API backend.

+
+
+
+ +
+ + +
+ + diff --git a/styles.css b/styles.css new file mode 100644 index 0000000..babbea7 --- /dev/null +++ b/styles.css @@ -0,0 +1,267 @@ +:root { + --bg-main: #0f1115; + --bg-secondary: #1a1d24; + --bg-tertiary: #232730; + --text-primary: #f8fafc; + --text-secondary: #94a3b8; + + /* Nueva Paleta Rosa para SRag */ + --accent-color: #ec4899; /* Rosa vibrante principal */ + --accent-hover: #db2777; /* Rosa más oscuro para hover */ + + --border-color: #2e3340; + --glass-bg: rgba(26, 29, 36, 0.4); + --glass-border: rgba(255, 255, 255, 0.08); +} + +* { margin: 0; padding: 0; box-sizing: border-box; } + +body { + font-family: 'Inter', -apple-system, sans-serif; + background-color: var(--bg-main); + color: var(--text-primary); + line-height: 1.6; + min-height: 100vh; + overflow-x: hidden; + position: relative; +} + +/* Efecto de gradiente de fondo (Rosa a Morado) */ +body::before, body::after { + content: ''; + position: fixed; + border-radius: 50%; + filter: blur(120px); + z-index: -1; + opacity: 0.15; + pointer-events: none; + animation: drift 20s infinite alternate; +} + +body::before { + width: 600px; + height: 600px; + background: var(--accent-color); /* Blob Rosa */ + top: -200px; + left: -200px; +} + +body::after { + width: 500px; + height: 500px; + background: #8b5cf6; /* Blob Morado mantenido para el gradiente */ + bottom: -100px; + right: -150px; + animation-delay: -5s; +} + +@keyframes drift { + 0% { transform: translate(0, 0); } + 100% { transform: translate(100px, 100px); } +} + +.container { max-width: 1200px; margin: 0 auto; padding: 4rem 2rem; } + +/* Hero */ +.hero { text-align: center; margin-bottom: 5rem; padding: 4rem 0; } + +.badge { + display: inline-block; + padding: 0.4rem 1rem; + background: rgba(236, 72, 153, 0.1); /* Resplandor rosa tenue */ + color: var(--accent-color); + border-radius: 20px; + font-size: 0.85rem; + font-weight: 600; + margin-bottom: 1.5rem; + border: 1px solid rgba(236, 72, 153, 0.2); + letter-spacing: 1px; +} + +.hero h1 { + font-size: 4rem; + font-weight: 800; + letter-spacing: -2px; + margin-bottom: 1.5rem; + background: linear-gradient(135deg, var(--text-primary) 0%, var(--text-secondary) 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; +} + +.hero p { + font-size: 1.25rem; + color: var(--text-secondary); + max-width: 700px; + margin: 0 auto 2.5rem; +} + +.hero-buttons { display: flex; justify-content: center; gap: 1rem; } + +.btn { + display: inline-flex; + align-items: center; + gap: 0.5rem; + padding: 0.8rem 1.8rem; + border-radius: 8px; + font-weight: 600; + text-decoration: none; + transition: all 0.3s ease; + font-size: 1rem; +} + +.btn-primary { + background-color: var(--accent-color); + color: #fff; + border: 1px solid var(--accent-color); + box-shadow: 0 4px 15px rgba(236, 72, 153, 0.3); /* Sombra rosa */ +} + +.btn-primary:hover { + background-color: var(--accent-hover); + transform: translateY(-2px); + box-shadow: 0 6px 20px rgba(236, 72, 153, 0.4); +} + +.btn-secondary { + background-color: var(--glass-bg); + color: var(--text-primary); + border: 1px solid var(--border-color); + backdrop-filter: blur(10px); +} + +.btn-secondary:hover { + background-color: var(--bg-tertiary); + border-color: var(--text-secondary); + transform: translateY(-2px); +} + +.btn-kofi { + background-color: var(--glass-bg); + color: var(--text-primary); + border: 1px solid var(--border-color); + backdrop-filter: blur(10px); +} + +.btn-kofi:hover { + background-color: rgba(236, 72, 153, 0.1); + border-color: var(--accent-color); + color: var(--accent-color); + transform: translateY(-2px); +} + +/* Glass Panels */ +.glass-panel { + background: var(--glass-bg); + backdrop-filter: blur(12px); + -webkit-backdrop-filter: blur(12px); + border: 1px solid var(--glass-border); + border-radius: 16px; + padding: 3rem; + margin-bottom: 4rem; + transition: transform 0.3s ease, border-color 0.3s ease; + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2); +} + +.glass-panel:hover { + border-color: rgba(255, 255, 255, 0.15); + transform: translateY(-2px); +} + +.section-title { + font-size: 2rem; + margin-bottom: 2rem; + color: var(--text-primary); + font-weight: 700; + display: flex; + align-items: center; + gap: 1rem; +} + +.section-title::after { + content: ''; + flex: 1; + height: 1px; + background: linear-gradient(90deg, var(--border-color) 0%, transparent 100%); +} + +.grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 3rem; align-items: center; } + +.tech-list { list-style: none; margin-top: 1.5rem; } +.tech-list li { + position: relative; + padding-left: 1.5rem; + margin-bottom: 1rem; + color: var(--text-secondary); + font-size: 1.05rem; + line-height: 1.6; +} + +.tech-list li::before { + content: ''; + position: absolute; + left: 0; + top: 0.5rem; + width: 8px; + height: 8px; + background: var(--accent-color); + border-radius: 50%; + box-shadow: 0 0 10px var(--accent-color); +} + +.code-block { + background-color: #0d0f12; + padding: 1.5rem; + border-radius: 8px; + font-family: 'Fira Code', monospace; + font-size: 0.9rem; + color: #e2e8f0; + border: 1px solid var(--border-color); + overflow-x: auto; + white-space: pre-wrap; + word-break: break-word; +} +.code-comment { color: #64748b; } +.code-keyword { color: #c678dd; } +.code-string { color: #98c379; } + +/* Features Grid */ +.hardware-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 1.5rem; + margin-top: 2rem; +} + +.hardware-card { + background: var(--bg-secondary); + border: 1px solid var(--border-color); + border-radius: 12px; + padding: 1.5rem; + text-align: center; + transition: all 0.3s; +} + +.hardware-card:hover { + border-color: var(--accent-color); + background: var(--bg-tertiary); +} + +.hardware-card h4 { color: var(--text-primary); margin-bottom: 0.5rem; font-size: 1.1rem; } +.hardware-card p { color: var(--text-secondary); font-size: 0.9rem; } + +footer { + text-align: center; + color: var(--text-secondary); + font-size: 0.9rem; + padding: 3rem 0 2rem; + border-top: 1px solid var(--border-color); + margin-top: 5rem; +} +.footer-link { color: var(--accent-color); text-decoration: none; transition: color 0.3s; } +.footer-link:hover { color: var(--text-primary); } + +@media (max-width: 900px) { + .grid-2, .hardware-grid { grid-template-columns: 1fr; } + .hero h1 { font-size: 3rem; } + .glass-panel { padding: 2rem; } +}