TGViewer
Channel Public Channel
🍳 Датазавтраки ☕️ НСК (Академ)

🍳 Датазавтраки ☕️ НСК (Академ)

@databreakfast

Каждый вторник с 8:30 до 10:00 в "Shurubor coffeeshop" у фонтана ТЦ https://go.2gis.com/wlkqi

По всем вопросам к @promsoft . Рекламу не размещаем
Subscribers
708
Photos
255
Videos
15
Links
1.9K

Showing posts older than #1653 · Back to latest

Older Posts 20 shown
Post #1650 250
Post #1649 206
Post #1646 192
Рассказывал про построение хранилищ данных по схеме Anchor Modeling - вот тут обзорно есть https://habr.com/ru/articles/786822/
Post #1645 196

Forwarded from Минцифра Новосибирской области

🧠 Искусственный интеллект — в центре повестки научно-производственного форума «Золотая Долина»

Мероприятие пройдет при поддержке минцифры Новосибирской области 13–14 ноября на площадке Новосибирского государственного университета. Объединит ученых, предпринимателей, представителей власти и корпораций.

«В стенах новосибирских вузов зарождаются уникальные проекты, создаются передовые решения. Очень важно, чтобы работа не прекращалась на этапе идеи или создания опытного образца, наша цель — чтобы технологии внедрялись в различных отраслях, масштабировались и работали на повышение качества жизни в области. Форум «Золотая долина» этому способствует. Это площадка для прямого диалога учёных, индустриальных партнёров и госсектора. Все мы нацелены на решение задач технологического лидерства и цифровой трансформации. В программе этого года приоритетные направления работы минцифры региона — искусственный интеллект, беспилотные авиационные системы, безопасный и умный город. Обсудим дальнейшие шаги по укреплению позиций Новосибирской области как центра ИТ-компетенций», — подчеркнул министр Сергей Цукарь.


На форуме будут представлены инструменты ИИ с практическим применением в промышленности и городской среде. Эксперты из академического и индустриального сообщества поделятся прогнозами по ключевым отраслям. Участников ждут прогноз-сессии с ведущими экспертами, стратегическая дискуссия о генеративном ИИ в госсекторе, тематические секции и биржа контактов университетов и бизнеса.

На выставке достижений продемонстрируют разработки, созданные под задачи индустриальных партнеров. Кроме того, пройдут питч-сессии и встречи для поиска партнеров. Завершится форум подписанием соглашений о сотрудничестве.

⚡️Подробности и регистрация на сайте форума
Post #1643 236

Forwarded from Время Валеры

Удивился второй раз в жизни при работе над инфрой. Первый раз был, когда переезд с Postgres на BigQuery в Blockchain com ускорил (на самом деле!) запросы в 100 раз и снизил стоимость в 10.

Тестировали Iceberg поверх Parquet

AWS Glue + Iceberg: стоимость ↓2.3x, скорость ↑3x
AWS EMR Serverless + Iceberg: стоимость ↓31x, скорость ↑6x
Databricks Serverless on Delta Lake: стоимость ↓3.5x, скорость ↑12x

Полез разбираться, как алгоритмически работает Iceberg поверх Parquet, и в очередной раз убедился, как же приятно читать/смотреть такие инженерные вещи, когда ребята садятся решать человеческие проблемы и находят простые решения.

Умные метаданные: знает статистики каждого файла без его чтения
Убирает дорогие LIST операции в S3 (экономия I/O)
Predicate pushdown: исключает файлы еще на этапе планирования
Hidden partitioning: автоматически находит нужные данные по любым колонкам ( У паркета тоже есть, но не так хорошо)
Snapshot isolation: читает консистентное состояние без блокировок

Главное - важность проверки разных платформ под конкретные бенчмарки. То, что работает для одного типа нагрузок, может быть неоптимально для другого.

P.S. Databricks показал отличные результаты с Delta Lake, но это уже другая история
  • 🔥 2
Post #1642 222
Post #1639 374
28.10.2025 🍳 датазавтрак по вторникам ☕️ в Новосибирском Академгородке с 8:30 до 10:00 в "Shurubor coffeeshop" у фонтана ТЦ https://go.2gis.com/wlkqi
Post #1638 465
3) Собственно RAG - максимально наколеночный, но работающий вариант
#!/usr/bin/env python3
from llama_index.retrievers.bm25 import BM25Retriever
from llama_index.llms.ollama import Ollama

from llama_index.core.query_engine import RetrieverQueryEngine
from llama_index.core import load_index_from_storage, StorageContext
from llama_index.core import Settings
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
from llama_index.core.retrievers import QueryFusionRetriever
from llama_index.core.retrievers.fusion_retriever import FUSION_MODES

HF_TOKEN = "Ваш токен на Hugging Face"

embeddings = HuggingFaceEmbedding(
model_name="google/embeddinggemma-300m",
query_instruction="task: search result | query: ",
text_instruction="title: none | text: ",
token=settings.HF_TOKEN,
)

llm = Ollama(
model="qwen3:latest",
request_timeout=120.0,
base_url="АДРЕС ВАШЕЙ ОЛЛАМЫ",
thinking=False,
)

Settings.embed_model = embeddings
Settings.llm = llm


loaded_bm25_retriever = BM25Retriever.from_persist_dir("./bm25_retriever")

# query_engine = RetrieverQueryEngine.from_args(retriever=loaded_bm25_retriever, llm=llm)

storage_context = StorageContext.from_defaults(persist_dir="./vector")
index2 = load_index_from_storage(storage_context)
vector_retriever = index2.as_retriever(similarity_top_k=2)

# QUERY_GEN_PROMPT = (
# "You are a helpful assistant that generates multiple search queries based on a "
# "single input query. Generate {num_queries} search queries, one on each line, "
# "related to the following input query:\n"
# "Query: {query}\n"
# "Queries:\n"

retriever = QueryFusionRetriever(
[vector_retriever, loaded_bm25_retriever],
similarity_top_k=2,
num_queries=4, #Делать 4 варианта перефразирования, поставьте 1 для отключения перефразирования
mode=FUSION_MODES.RECIPROCAL_RANK,
use_async=True,
verbose=True,
# query_gen_prompt="...", # we could override the query generation prompt here
)

query_engine = RetrieverQueryEngine.from_args(retriever=retriever, llm=llm)

r = query_engine.query(query)
print(r)
Post #1637 313
2) векторный индекс, максимально тупо
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
from llama_index.core import VectorStoreIndex
from llama_index.core.node_parser import SentenceSplitter
from llama_index.core import SimpleDirectoryReader
from llama_index.core import Settings


HF_TOKEN = "Ваш токен на Hugging Face"

embeddings = HuggingFaceEmbedding(
model_name="google/embeddinggemma-300m",
query_instruction="task: search result | query: ",
text_instruction="title: none | text: ",
token=settings.HF_TOKEN,
)

Settings.embed_model = embeddings


documents = SimpleDirectoryReader("./data").load_data()
splitter = SentenceSplitter(chunk_size=512, chunk_overlap=256)
index = VectorStoreIndex.from_documents(
documents, transformations=[splitter], embed_model=embeddings
)
index.storage_context.persist(persist_dir="./vector")
  • ❤ 1
Post #1636 301
Обещал пример RAG на LLamaIndex, о трех частях:
1) bm25 индекс
from llama_index.core import SimpleDirectoryReader
from llama_index.core.node_parser import SentenceSplitter
from llama_index.retrievers.bm25 import BM25Retriever

import Stemmer

documents = SimpleDirectoryReader("./data").load_data()
splitter = SentenceSplitter(chunk_size=512, chunk_overlap=256)
nodes = splitter.get_nodes_from_documents(documents)

bm25_retriever = BM25Retriever.from_defaults(
nodes=nodes,
similarity_top_k=2,
stemmer=Stemmer.Stemmer("russian"),
language="russian",
)
bm25_retriever.persist("./bm25_retriever")
Post #1635 294
обещал пример RAG на яндекс-облаке

from yandex_cloud_ml_sdk import YCloudML
from yandex_cloud_ml_sdk.search_indexes import (
HybridSearchIndexType,
TextSearchIndexType,
StaticIndexChunkingStrategy,
ReciprocalRankFusionIndexCombinationStrategy,
)

sdk = YCloudML(
folder_id="ID проекта",
auth="КОД АВТОРИЗАЦИИ",
)

instruction = 'ПРОМПТ КАКОЙ_ТО'

# Пример того, как загружаются данные в поисковый индекс
# file = sdk.files.upload("all.txt")

#operation = sdk.search_indexes.create_deferred(
# [file],
# index_type=HybridSearchIndexType(
# chunking_strategy=StaticIndexChunkingStrategy(
# max_chunk_size_tokens=512,
# chunk_overlap_tokens=256,
# ),
# combination_strategy=ReciprocalRankFusionIndexCombinationStrategy(),
# ),
#)

# hybrid_index = operation.wait()
hybrid_index = sdk.search_indexes.get(ИДЕНТИФИКАТОР СОЗДАННОГО ИНДЕКСА)
hybrid_tool = sdk.tools.search_index(hybrid_index)
model = sdk.models.completions("yandexgpt", model_version="rc")
assistant = sdk.assistants.create(model, tools=[hybrid_tool], instruction=instruction)
hybrid_index_thread = sdk.threads.create()

query = "Ваш вопрос по датасету"

hybrid_index_thread.write(query)
run = assistant.run(hybrid_index_thread)
result = run.wait().message

print("\n".join(result.parts))
  • 🔥 3
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →