Show HN: Semantic grep for Claude Code (local embeddings)
GitHub-репозиторий BeaconBay/ck
Публичный проект без описания.
Кнопки: «Code», «Issues», «Pull requests», «Actions», «Projects», «Wiki», «Security», «Insights».
Последний коммит: 2 года назад.
Язык: C.
Лицензия: отсутствует.
Комментарии (60)
- Утилита ck — это «семантический grep» на Rust: строет локальный векторный индекс файлов и ищет по смыслу, а не только по ключевым словам.
- Работает через embeddings (BAAI/bge-small-en-v1.5, планируется Gemma), повторное индексирование запускается автоматически при изменении файлов.
- Поддерживает почти все языки, но для точного семантического чанкинга требуется донастройка tree-sitter; grep-режим остаётся дефолтом.
- Пользователи жалуются на медленный поиск в больших проектах, отсутствие TypeScript-LSP и «разрезание» эмодзи; README считают «AI-флаффным».
- Альтернативы: Codanna, Serena, Roo с Qdrant, SemTools; автор приглашает тестеров и PR для доведения до зрелости.
Show HN: Vectorless RAG
## Простой RAG с PageIndex
**Цель**
Показать, как за 5 минут построить полноценный Retrieval-Augmented Generation пайплайн на базе PageIndex.
---
### 1. Установка и импорт
```bash
pip install pageindex openai
import pageindex, openai, os
openai.api_key = os.getenv("OPENAI_API_KEY")
2. Загрузка документов
Поддерживаются PDF, DOCX, TXT, MD, PPTX, CSV, JSON.
docs = pageindex.load_documents("data/")
index = pageindex.Index(name="my_docs")
index.add_documents(docs)
3. Поиск и генерация
query = "Какие преимущества RAG?"
chunks = index.search(query, top_k=3)
context = "\n".join(c.text for c in chunks)
prompt = f"Используй контекст:\n{context}\n\nВопрос: {query}"
answer = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": prompt}]
).choices[0].message.content
print(answer)
4. Потоковый чат
chat = index.chat_session(model="gpt-4")
print(chat.ask("Сравни RAG и fine-tuning"))
5. Сохранение и переиспользование
index.save("my_docs.pidx")
# index = pageindex.Index.load("my_docs.pidx")
Советы
- Для больших объёмов используй
batch_size=100
. - Повышай
top_k
при недостаточном контексте. - Добавляй
metadata={"source": "file.pdf"}
для фильтрации.
Готово! Теперь у вас работает RAG без векторных БД и сложной инфраструктуры.
Комментарии (93)
- Критики считают «vectorless RAG» переизобретением семантического чанкинга + иерархического поиска и сомневаются в масштабируемости.
- Основной минус — высокие затраты и латентность: каждый запрос требует прогона LLM по всем документам или их крупным фрагментам.
- Подход может подойти для малого корпуса или офлайн-задач (юрдоки, медкарты), но не для чатов «здесь и сейчас».
- Некоторые предлагают гибриды: ANN-вектора для быстрого отбора, затем LLM-переранжирование.
- Пропущены публичные бенчмарки; сравнение ограничено собственным датасетом MAFIN2.5.