Как базы данных векторов формируют будущее решений по генеративному искусственному интеллекту?

Будущие перспективы генеративного искусственного интеллекта роль баз данных векторных форм

Введение

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

Цели обучения

В этой статье вы узнаете о следующих аспектах векторных баз данных:

  • Значимость векторных баз данных и их ключевые компоненты
  • Детальное изучение сравнения векторных баз данных с традиционными базами данных
  • Исследование векторных эмбеддингов с точки зрения применения
  • Построение векторных баз данных с использованием Pincone
  • Реализация векторной базы данных Pinecone с использованием модели langchain LLM

Эта статья была опубликована в рамках Блогатона по науке о данных.

Что такое векторная база данных?

Векторная база данных представляет собой форму сбора данных, которая хранится в пространстве. Однако здесь она хранится в математических представлениях, так как формат, в котором хранятся данные в базах данных, упрощает запоминание входных данных открытыми моделями и позволяет нашим приложениям на основе ИИ использовать когнитивный поиск, рекомендации и генерацию текста для различных практических применений в цифрово трансформированных отраслях. Хранение данных и извлечение данных называется “векторным эмбеддингом” или “эмбеддингом”. Более того, это представлено в формате числового массива. Поиск гораздо проще, чем в традиционных базах данных, используемых для ИИ с массовыми индексирующими возможностями.

Характеристики векторных баз данных

  • Оно использует мощь этих векторных эмбеддингов, что позволяет индексировать и искать по огромному набору данных.
  • Совместимо со всеми форматами данных (изображения, текст или данные).
  • Благодаря использованию техник эмбеддинга и высокоиндексированной функциональности оно может предложить полное решение для управления данными и вводом для данной задачи.
  • Векторная база данных организует данные с помощью высокоразмерных векторов, содержащих сотни измерений. Мы можем быстро их настраивать.
  • Каждое измерение соответствует определенной особенности или свойству объекта данных, которое оно представляет.

Традиционные ба
зы данных против векторных баз данных

  • На картинке показаны основные этапы работы с традиционными и векторными базами данных.
  • Формальное взаимодействие с базами данных происходит с помощью операторов SQL и данные хранятся в строковом или табличном формате.
  • В векторной базе данных взаимодействие происходит через простой текст (например, на английском) и данные хранятся в математических представлениях.

Сходство традиционных и векторных баз данных

Мы должны рассмотреть, в чем отличие векторных баз данных от традиционных. Давайте обсудим это здесь. Одно из быстрых различий – в традиционных базах данных данные хранятся так, как они есть; мы можем добавлять бизнес-логику для настройки данных и объединять или разделять данные в соответствии с бизнес-требованиями или потребностями. Однако в векторной базе данных происходит массовое преобразование данных, и данные превращаются в сложное векторное представление.

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

Простая аналогия для понимания векторных баз данных

Данные автоматически пространственно упорядочиваются по сходству содержащейся информации. Таким образом, давайте рассмотрим универмаг в качестве аналогии к векторной базе данных: все товары расположены на полке в зависимости от их природы, назначения, производства, использования и количества. По аналогии с этим поведением, данные автоматически упорядочиваются в векторной базе данных по сходству, даже если жанр не был четко определен при хранении или доступе к данным.

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

Основные теории векторных баз данных

  • Векторные вложения и их область применения
  • Требования к индексации
  • Понимание семантического и поиска по сходству

Векторное вложение и его область применения

Векторное вложение – это векторное представление в числовых значениях. В сжатом формате вложения фиксируют внутренние свойства и связи исходных данных, что делает их неотъемлемой частью применения искусственного интеллекта и машинного обучения. Разработка вложений для кодирования соответствующей информации об исходных данных в пространстве меньшей размерности обеспечивает высокую скорость извлечения, вычислительную эффективность и эффективное хранение.

Захват сущности данных в более однородно структурированной форме является процессом векторного вложения, который формирует «Вложенную модель». В конечном итоге эти модели рассматривают все объекты данных, извлекают смысловые шаблоны и отношения в источнике данных и преобразуют их в векторные вложения. Последующим образом алгоритмы используют эти векторные вложения для выполнения различных задач. Множество высокоразвитых моделей вложения, доступных онлайн бесплатно или по оплате по мере использования, облегчают достижение векторного вложения.

Область применения векторных вложений с точки зрения приложений

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

Техники векторного вложения являются основополагающими для связи между читаемыми данными и сложными алгоритмами. Благодаря тому, что типы данных являются числовыми векторами, мы смогли разблокировать потенциал большого разнообразия приложений с использованием Генеративного ИИ и доступных Открытых моделей ИИ.

Множественные задачи с использованием векторного вложения

Это векторное вложение помогает нам выполнять несколько задач:

  • Поиск информации: С помощью этих мощных техник мы можем создать высокоэффективные поисковые системы, которые помогут нам находить ответы на основе запросов пользователя в хранимых файлах, документах или медиафайлах.
  • Операции поиска по сходству: Благодаря хорошей организации и индексированию мы можем находить сходство между различными вхождениями в векторные данные.
  • Классификация и кластеризация: С помощью этих техник вложения мы можем использовать модели для обучения соответствующих алгоритмов машинного обучения и группировки и классификации данных.
  • Системы рекомендаций: Поскольку техники вложения организованы правильно, это приводит к точным системам рекомендаций, связывающим продукты, медиа и статьи на основе исторических данных.
  • Анализ тональности: Данная модель вложения помогает категоризировать и определять решения о тональности.

Требования к индексации

Как мы знаем, индекс улучшает поиск данных в таблице в традиционных базах данных, аналогично векторным базам данных и обеспечивает возможности индексации.

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

  • Благодаря простоте этого индекса требуется минимальное вычисление для создания новых индексов.
  • Отлично, плоский индекс позволяет эффективно обрабатывать запросы и обеспечивает быстрое время извлечения.

Мы выполняем два разных типа поиска в векторных базах данных: семантический и поиск по сходству.

  • Семантический поиск: Во время поиска информации вместо ключевых слов вы можете находить ее на основе методологии смыслового общения. Значение ввода играет важную роль в передаче информации системе. Такой поиск позволяет получать более высококачественные результаты, которые могут быть использованы в инновационных приложениях, оптимизации поиска, генерации текста и кратком описании.
  • Поиск по сходству: В анализе данных поиск по сходству позволяет работать с неструктурированными наборами данных. В случае векторных баз данных необходимо определить, насколько близки два вектора и насколько они похожи друг на друга: таблицы, тексты, документы, изображения, слова и аудиофайлы. В результате анализа сходства между векторами мы узнаем о сходстве между объектами данных. Это помогает нам понять взаимодействие, выявить закономерности, извлечь информацию и принимать решения с точки зрения приложений. Семантический и поиск по сходству позволят нам создавать следующие приложения для преимущества отрасли.
  • Поиск информации: С использованием Open AI и векторных баз данных мы можем создавать поисковые системы для извлечения информации на основе запросов бизнес-пользователей или конечных пользователей и проиндексированных документов внутри векторной базы данных.
  • Классификация и кластеризация: Классификация или кластеризация похожих точек данных или групп объектов позволяет назначать им несколько категорий на основе общих характеристик.
  • Выявление аномалий: Обнаружение необычных паттернов путем измерения сходства точек данных и обнаружения неправильностей.

Типы мер сходства в векторных базах данных

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

Евклидово расстояние

Простыми словами, расстояние между двумя векторами — это прямая линия между двуми точками вектора, которая определяет их расстояние.

Скалярное произведение

Это помогает нам понять соотношение между двумя векторами и указывает, указывает ли они в одном направлении, противоположных направлениях или они перпендикулярны друг другу.

Косинусное сходство

Оно оценивает сходство двух векторов, используя их угол, как показано на рисунке. При этом значения и величина векторов незначительны и не влияют на результаты; в расчете учитывается только угол между ними.

Традиционные базы данных ищут точно соответствующие SQL-запросы и извлекают данные в табличном формате. В то время как мы работаем с векторными базами данных, ищем наиболее похожий вектор на запрос на обычном английском с использованием техники Prompt Engineering. База данных использует алгоритм приближенного поиска ближайших соседей (ANN) для поиска похожих данных. Всегда предоставляет достаточно точные результаты с высокой производительностью, точностью и временем отклика.

Рабочий механизм

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

Создание векторной базы данных

Связывайтесь с Pinecone.

https://app.pinecone.io/

Вы можете подключиться к Pinecone с использованием учетной записи Google, GitHub или Microsoft.

Создайте новую учетную запись пользователя для вашего использования.

После успешного входа вы попадете на страницу Индекса, где вы сможете создать индекс для нужд вашей векторной базы данных. Нажмите кнопку Создать индекс.

Создайте новый индекс, указав имя и размеры.

Страница списка индексов,

Детали индекса – Имя, Регион и Окружение – Нам нужны все эти данные для подключения нашей векторной базы данных из кода создания модели.

Детали настроек проекта,

Вы можете настроить свои предпочтения для нескольких индексов и ключей для проектных целей.

Пока что мы обсудили создание индекса векторной базы данных и настройки в Pinecone.

Реализация векторной базы данных с использованием Python

Давайте теперь несколько кодирования.

Импортирование библиотек

from langchain.embeddings.openai import OpenAIEmbeddingsfrom langchain.text_splitter import RecursiveCharacterTextSplitterfrom langchain.llms import OpenAIfrom langchain.vectorstores import Pineconefrom langchain.document_loaders import TextLoaderfrom langchain.chains.question_answering import load_qa_chainfrom langchain.chat_models import ChatOpenAI

Предоставление API-ключа для OpenAI и векторной базы данных

import osos.environ["OPENAI_API_KEY"] = "xxxxxxxx"PINECONE_API_KEY = os.environ.get('PINECONE_API_KEY', 'xxxxxxxxxxxxxxxxxxxxxxx')PINECONE_API_ENV = os.environ.get('PINECONE_API_ENV', 'gcp-starter')api_keys="xxxxxxxxxxxxxxxxxxxxxx"llm = OpenAI(OpenAI=api_keys, temperature=0.1)

Инициализация LLM

llm=OpenAI(openai_api_key=os.environ["OPENAI_API_KEY"],temperature=0.6)

Инициализация Pinecone

import pineconepinecone.init(    api_key=PINECONE_API_KEY,      environment=PINECONE_API_ENVindex_name = "demoindex" 

Загрузка файла .csv для создания векторной базы данных

from langchain.document_loaders.csv_loader import CSVLoaderloader = CSVLoader(file_path="/content/drive/My Drive/Colab_Notebooks/cereal.csv",source_column="name")data = loader.load()

Разделение текста на части

text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=20)text_chunks = text_splitter.split_documents(data)

Поиск текста в text_chunk

text_chunks

Вывод

[Document(page_content=‘name: 100% Bran\nmfr: N\ntype: C\ncalories: 70\nprotein: 4\nfat: 1\nsodium: 130\nfiber: 10\ncarbo: 5\nsugars: 6\npotass: 280\nvitamins: 25\nshelf: 3\nweight: 1\ncups: 0.33\nrating: 68.402973\nrecommendation: Kids’, metadata={‘source’: ‘100% Bran’, ‘row’: 0}), , …..

Построение вложения

embeddings = OpenAIEmbeddings()

Создайте экземпляр Pinecone для векторной базы данных из ‘data’

vectordb = Pinecone.from_documents(text_chunks,embeddings,index_name="demoindex")

Создайте ретривер для запроса векторной базы данных.

retriever = vectordb.as_retriever(score_threshold = 0.7)

Извлечение данных из векторной базы данных

rdocs = retriever.get_relevant_documents("Cocoa Puffs")rdocs

Использование промпта и извлечение данных

from langchain.prompts import PromptTemplateprompt_template = """При заданном контексте и вопросе, сгенерируйте ответ только на основе этого контекста. Пожалуйста, скажите "Я не знаю". Не пытайтесь придумать ответ.КОНТЕКСТ: {context}ВОПРОС: {question}"""PROMPT = PromptTemplate(    template=prompt_template, input_variables=["context", "question"])chain_type_kwargs = {"prompt": PROMPT}

from langchain.chains import RetrievalQAchain = RetrievalQA.from_chain_type(llm=llm,                            chain_type="stuff",                            retriever=retriever,                            input_key="query",                            return_source_documents=True,                            chain_type_kwargs=chain_type_kwargs)                            

Давайте запросим данные.

chain('Можете, пожалуйста, порекомендовать кашу для детей?')

Результат запроса

{'query': 'Можете, пожалуйста, порекомендовать кашу для детей?','result': [Document(page_content='name: Crispix\nmfr: K\ntype: C\ncalories: 110\nprotein: 2\nfat: 0\nsodium: 220\nfiber: 1\ncarbo: 21\nsugars: 3\npotass: 30\nvitamins: 25\nshelf: 3\nweight: 1\ncups: 1\nrating: 46.895644\nrecommendation: Kids', metadata={'row': 21.0, 'source': '/content/drive/My Drive/Colab_Notebooks/cereal.csv'}), ..]

Вывод

Надеюсь, вы понимаете, как работают векторные базы данных, их компоненты, архитектура и особенности векторных баз данных в решениях генеративного ИИ. Понимайте, как векторная база данных отличается от традиционной базы данных и сравнение с элементами обычной базы данных. Действительно, аналогия помогает вам лучше понять векторную базу данных. Шаги создания векторной базы данных и индексации Pinecone помогут вам создать векторную базу данных и привести ключ для следующей реализации кода.

Основные моменты

  • Совместимость с структурированными, неструктурированными и полуструктурированными данными.
  • Адаптация техник векторного представления и высокоиндексированных функций.
  • Взаимодействие происходит через обычный текст с использованием промпта (например, на английском языке). Данные хранятся в математическом представлении.
  • Подобие калибруется в векторных базах данных с помощью евклидовой показателя, косинусного сходства и скалярного произведения.

Часто задаваемые вопросы

Средства, показанные в этой статье, не принадлежат Analytics Vidhya и используются по усмотрению автора.