Реальный Python
3.8K subscribers
828 photos
10 videos
7 files
877 links
Все о пайтон, новости, подборки на русском и английском. По всем вопросам @evgenycarter
Download Telegram
🦙 LlamaIndex: Ваш персональный мост между данными и LLM

Многие думают, что для работы нейросети с вашими личными документами нужно заниматься сложным «файнтюнингом». На самом деле, чаще всего достаточно RAG (Retrieval-Augmented Generation). И здесь королем выступает LlamaIndex.

Что это такое?

Если LangChain это швейцарский нож для любых задач с цепочками действий, то LlamaIndex специализируется именно на данных. Он берет ваши PDF, базы данных или заметки из Notion и превращает их в формат, который «понимает» LLM (например, GPT-4).

Ключевые возможности из свежего гайда:

🔹Data Connectors: Загрузка данных из 100+ источников (Slack, Google Drive, Postgres и т.д.).
🔹Indexing: Разбиение текста на умные фрагменты (nodes) и создание векторных индексов для быстрого поиска.
🔹Query Engine: Интерфейс, который позволяет «общаться» со своими данными на естественном языке.

Мини-пример кода:

Всего несколько строк, чтобы заставить модель отвечать по вашему локальному файлу:


from llama_index.core import VectorStoreIndex, SimpleDirectoryReader

# 1. Загружаем документы из папки
documents = SimpleDirectoryReader("./data").load_data()

# 2. Создаем индекс (автоматически эмбеддинги и хранение)
index = VectorStoreIndex.from_documents(documents)

# 3. Задаем вопрос
query_engine = index.as_query_engine()
response = query_engine.query("В чем основная мысль отчета за квартал?")
print(response)



Почему стоит попробовать?

1. Актуальность: Модель не будет галлюцинировать, если ответ есть в ваших документах.
2. Экономия: Не нужно переобучать модель - достаточно обновить индекс.
3. Гибкость: Поддерживает как простые скрипты, так и сложные enterprise-архитектуры.


📖 Полный разбор с примерами: https://realpython.com/llamaindex-examples/

#python #llm #llamaindex #ai #rag

👉 @python_real
👍4
🐍 Python Deque: Когда обычного списка недостаточно

Многие используют стандартный list для любых задач, связанных с хранением последовательностей. Но что, если вам нужно эффективно добавлять или удалять элементы с обоих концов структуры?

Здесь на сцену выходит collections.deque (double-ended queue).

🚀 Почему Deque круче списка в определенных задачах?

Главная проблема list в том, что он оптимизирован для операций с правой стороны. Удаление или вставка в начало списка (list.insert(0, v) или list.pop(0)) заставляет Python сдвигать все остальные элементы, что дает сложность .

deque обеспечивает:

🔹O(1) для операций добавления/удаления как слева, так и справа.
🔹Возможность создания кольцевых буферов (ограниченных очередей).
🔹Потокобезопасность для атомарных операций добавления/удаления.

🛠 Примеры использования


from collections import deque

# 1. Создаем дек
d = deque(['middle'])

# 2. Добавляем элементы с двух сторон
d.append('right') # в конец
d.appendleft('left') # в начало
print(d) # deque(['left', 'middle', 'right'])

# 3. Удаляем элементы
d.pop()
d.popleft()

# 4. Ограниченная очередь (самое полезное!)
# Хранит только последние 3 элемента. Идеально для логов или истории.
history = deque(maxlen=3)
for i in range(5):
history.append(f"Action {i}")
print(history)
# Результат: всегда только последние 3 действия



💡 Когда стоит использовать deque?

🔹Реализация очередей (FIFO) и стеков (LIFO).
🔹Алгоритмы обхода графов (BFS - поиск в ширину).
🔹Хранение последних логов или сообщений.

Важный нюанс: Доступ к элементам по индексу в середине дека (d[n]) работает медленнее (O(n)), чем в списке (O(1)). Если вам нужен частый произвольный доступ - оставайтесь на list.


📖 Подробнее в статье: https://realpython.com/python-deque/

#python #tips #collections #backend

👉 @python_real
👍4
👨‍💻В Python-проектах со временем появляется одна и та же проблема: код работает, но становится всё сложнее поддерживать его, расширять и объяснять коллегам. Особенно в долгоживущих системах, где архитектурные решения начинают играть не меньшую роль, чем сама бизнес-логика.

На открытом уроке OTUS разберём паттерны проектирования и их применение в Python-приложениях. Обсудим, какие паттерны существуют, зачем они нужны и как классические идеи объектно-ориентированного проектирования адаптируются под Python, несмотря на то, что изначально формировались для других языков.

Вы поймёте, в каких задачах паттерны действительно помогают, научитесь различать основные группы паттернов и видеть их область применимости. Разберём, как использовать паттерны в Python без излишнего усложнения кода.

💥Встречаемся 10 февраля в 20:00 МСК в преддверии старта курса «Python Developer. Professional». Регистрация открыта: https://vk.cc/cU5auL

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
1💩1🕊1