Учебная серия на TXTAI (21 серия деталей)
Эта учебная серия будет охватывать основные варианты использования для txtai , Семантический поисковый платформ с AI с AI. Каждая часть в серии имеет соответствующую записную книжку, которая может полностью воспроизводить каждую статью.
Представление txtai
txtai Выполняет рабочие процессы машинного обучения для преобразования данных и создания семантических поисковых приложений с AI.
Традиционные системы поиска используют ключевые слова для поиска данных. Семантические поисковые приложения имеют понимание естественного языка и определяют результаты, которые имеют одинаковое значение, не обязательно одинаковые ключевые слова.
Подкрепленные современными моделями машинного обучения, данные преобразуются в векторные представления для поиска (также известные как Entgdings). Инновации происходят в быстром темпе, модели могут понимать концепции в документах, аудио, изображениях и многое другое.
Ниже приводится сводка ключевых функций:
- 🔎 крупномасштабный поиск сходства с несколькими индексными бэкэнами ( faiss , Раздражать В Hnswlib )
- 📄 Создайте встраивания для фрагментов текста, документов, аудио, изображений и видео. Поддерживает трансформаторы и векторы слов.
- 💡 Машино-обучающие трубопроводы для запуска экстрактивного вопроса-ответа, метки с нулевым выстрелом, транскрипции, перевода, суммирования и извлечения текста
- ↪ Рабочие процессы, которые объединяют трубопроводы вместе, чтобы объединить бизнес -логику. Процессы TXTAI могут быть микросервисами или полноценными рабочими процессами индексации.
- 🔗 Привязки API для JavaScript , Java , Ржавчина и Идти
- ☁ Облачная архитектура, которая масштабируется с помощью систем оркестровки контейнеров (например, Kubernetes)
Приложения варьируются от поиска сходства до сложных извлечения данных, управляемых NLP, до генерации структурированных баз данных. Следующие приложения оснащены txtai.
- Paperai – Двигатель литературы по AI Discovery and Review Engine для медицинских/научных работ
- Tldrstory – Понимание ВАИ ВЛЕСТОЧНОГО НАВЛЕЕ УСТАНОВКА И ТЕКСТА ИСТОРИИ
- Neuspo -Факты, спортивное мероприятие в реальном времени и новостной сайт
- CodeQuestion – Задайте вопросы кодирования непосредственно из терминала
txtai построен с Python 3.6+, Обнимание трансформаторов лица , Трансформеры предложения и FASTAPI
В этой статье дается обзор txtai и того, как выполнять поиск сходства.
Установить зависимости
Установить txtai
и все зависимости.
pip install txtai
Создайте экземпляр Entagedings
Экземпляр Enterdings является основной точкой входа для txtai. Экземпляр Entgeddings определяет метод, используемый для токенизации и преобразования текстового раздела в вектор Entgeddings.
from txtai.embeddings import Embeddings # Create embeddings model, backed by sentence-transformers & transformers embeddings = Embeddings({"path": "sentence-transformers/nli-mpnet-base-v2"})
Запросы сходства
Встроенный экземпляр опирается на базовую модель трансформатора для построения текстовых встроений. В следующем примере показано, как использовать экземпляр, встраивающие трансформаторы, для выполнения поиска сходства для списка различных концепций.
data = ["US tops 5 million confirmed virus cases", "Canada's last fully intact ice shelf has suddenly collapsed, forming a Manhattan-sized iceberg", "Beijing mobilises invasion craft along coast as Taiwan tensions escalate", "The National Park Service warns against sacrificing slower friends in a bear attack", "Maine man wins $1M from $25 lottery ticket", "Make huge profits without work, earn up to $100,000 a day"] print("%-20s %s" % ("Query", "Best Match")) print("-" * 50) for query in ("feel good story", "climate change", "public health story", "war", "wildlife", "asia", "lucky", "dishonest junk"): # Get index of best section that best matches query uid = embeddings.similarity(query, data)[0][0] print("%-20s %s" % (query, data[uid]))
Query Best Match -------------------------------------------------- feel good story Maine man wins $1M from $25 lottery ticket climate change Canada's last fully intact ice shelf has suddenly collapsed, forming a Manhattan-sized iceberg health US tops 5 million confirmed virus cases war Beijing mobilises invasion craft along coast as Taiwan tensions escalate wildlife The National Park Service warns against sacrificing slower friends in a bear attack asia Beijing mobilises invasion craft along coast as Taiwan tensions escalate lucky Maine man wins $1M from $25 lottery ticket dishonest junk Make huge profits without work, earn up to $100,000 a day
Приведенный выше пример показан почти для всех запросов, фактический текст не хранится в списке текстовых разделов. Это истинная сила моделей трансформаторов над поиском на основе токков. То, что вы получаете из коробки, это 🔥🔥🔥!
Создание индекса вторжений
Для небольших списков текстов приведенный выше метод работает. Но для более крупных репозиториев документов не имеет смысла токенизировать и конвертировать в встраивание по каждому запросу. TXTAI поддерживает создание предварительно вычисленных индексов, которые значительно улучшают производительность.
Опираясь на предыдущий пример, в следующем примере запускается метод индекса для создания и хранения текстовых встроений. В этом случае только запрос преобразуется в вектор вторжений каждый поиск.
# Create an index for the list of text embeddings.index([(uid, text, None) for uid, text in enumerate(data)]) print("%-20s %s" % ("Query", "Best Match")) print("-" * 50) # Run an embeddings search for each query for query in ("feel good story", "climate change", "public health story", "war", "wildlife", "asia", "lucky", "dishonest junk"): # Extract uid of first result # search result format: (uid, score) uid = embeddings.search(query, 1)[0][0] # Print text print("%-20s %s" % (query, data[uid]))
Query Best Match -------------------------------------------------- feel good story Maine man wins $1M from $25 lottery ticket climate change Canada's last fully intact ice shelf has suddenly collapsed, forming a Manhattan-sized iceberg health US tops 5 million confirmed virus cases war Beijing mobilises invasion craft along coast as Taiwan tensions escalate wildlife The National Park Service warns against sacrificing slower friends in a bear attack asia Beijing mobilises invasion craft along coast as Taiwan tensions escalate lucky Maine man wins $1M from $25 lottery ticket dishonest junk Make huge profits without work, earn up to $100,000 a day
Встраивание загрузки/сохранение
Индексы внедрения могут быть сохранены на диск и перезагружены. В настоящее время индексы не создаются постепенно, индекс нуждается в полной перестройке для включения новых данных. Но это улучшение в отставке.
embeddings.save("index") embeddings = Embeddings() embeddings.load("index") uid = embeddings.search("climate change", 1)[0][0] print(data[uid])
Canada's last fully intact ice shelf has suddenly collapsed, forming a Manhattan-sized iceberg
ls index
config embeddings
Обновление/удаление встроенных
Обновления и удаления поддерживаются для индексов встраивания. Операция Upsert будет вставлять новые данные и обновлять существующие данные
В следующем разделе выполняется запрос, затем обновляет значение, изменяющее верхний результат и, наконец, удаляет обновленное значение, чтобы вернуться к исходным результатам запроса.
# Run initial query uid = embeddings.search("feel good story", 1)[0][0] print("Initial: ", data[uid]) # Update data data[0] = "See it: baby panda born" embeddings.upsert([(0, data[0], None)]) uid = embeddings.search("feel good story", 1)[0][0] print("After update: ", data[uid]) # Remove record just added from index embeddings.delete([0]) # Ensure value matches previous value uid = embeddings.search("feel good story", 1)[0][0] print("After delete: ", data[uid])
Initial: Maine man wins $1M from $25 lottery ticket After update: See it: baby panda born After delete: Maine man wins $1M from $25 lottery ticket
Методы встраивания
Enterdings поддерживает два метода создания текстовых векторов, библиотеки библиотеки предложений и векторов Word Enterdings. Оба метода имеют свои достоинства, как показано ниже:
- ПРЕДЛОЖЕНИЯ Трансформаторы
- Создает один вектор встроенных вторжений посредством среднего объединения векторов, генерируемых библиотекой трансформаторов.
- Поддерживает модели, хранящиеся в модельном концентраторе обнимающего лица или хранится на местном уровне.
- См. Предложения-трансформаторы для получения подробной информации о том, как создавать пользовательские модели, которые можно сохранить локально или загружать в модель Hugging Face.
- Базовые модели требуют значительной вычислительной способности (предпочтительный графический процессор). Возможно создать модели меньшего/более легкого веса, которые точность компромисса для скорости.
- Слово встраивание
- Создает один вектор встроенных вторжений посредством оценки BM25 каждого компонента слова. Смотрите это Средняя статья для логики этого метода.
- При поддержке Pymagnity библиотека. Предварительно обученные векторы Word могут быть установлены из ссылки на ссылку.
- Смотрите words.py Для кода, который может создавать векторы слов для пользовательских наборов данных.
- Значительно лучшая производительность с моделями по умолчанию. Для более крупных наборов данных он предлагает хороший компромисс скорости и точности.
Учебная серия на TXTAI (21 серия деталей)
Оригинал: “https://dev.to/neuml/tutorial-series-on-txtai-ibg”