Зібрано з Google
У сучасному світі перевантаження інформацією, ефективні системи пошуку тексту стають важливішими, ніж будь-коли. Використовуючи векторні бази даних та вбудовування, ми можемо створити систему, яка надає швидкі та точні результати пошуку. Цей блог пояснює процес крок за кроком, з візуальними поясненнями для спрощення складних ідей.
Діаграма 1: Від запиту людини до векторної бази даних
Перша діаграма відображає потік запиту від користувача до отримання результатів через векторну базу даних. Ось як розгортається процес:
1. Взаємодія з користувачем
- Процес: Користувач вводить текстовий запит у систему.
- Що відбувається: Цей запит ініціює процес пошуку.
- Ілюстрація: Уявіть людину, яка набирає на комп'ютері, з бульбашкою над головою, що містить знак питання.
2. Обробка текстового запиту
- Процес: Текстовий запит перетворюється на вбудовування. Ці вбудовування — це числові уявлення запиту.
- Що відбувається: Вбудовування дозволяють системі інтерпретувати запит у математичному просторі.
- Ілюстрація: Покажіть текст, що перетворюється на числовий вектор, з стрілками, що вказують на структури, схожі на код.
3. Пошук подібності
- Процес: Вбудовування використовуються для пошуку схожих записів у векторній базі даних.
- Що відбувається: База даних знаходить записи, які відповідають запиту.
- Ілюстрація: Лінії з’єднують вектор з різними записами бази даних, з виділеним співпадінням.
4. Векторна база даних
- Процес: Ця спеціалізована база даних зберігає дані у вигляді векторів для швидкого доступу.
- Що відбувається: Процес пошуку зосереджений на числовій подібності.
- Ілюстрація: База даних з числовими вбудовуваннями всередині.
5. Інтеграція з Cassandra DB
- Процес: Результати з векторної бази даних інтегруються з базою даних Cassandra.
- Що відбувається: База даних Cassandra керує фінальними результатами.
- Ілюстрація: Дві бази даних, підписані як "Векторна база даних" і "Cassandra DB", з'єднані стрілками.
6. Інтеграція з DataStax
- Процес: Інструменти DataStax покращують ефективність Cassandra для пошуку за векторами.
- Що відбувається: Ефективність системи зростає завдяки оптимізованим інструментам.
- Ілюстрація: Зв'язок між Cassandra DB і логотипом DataStax.
Діаграма 2: Від PDF-документів до вбудовувань
Друга діаграма зосереджується на обробці PDF-документів для того, щоб їхній зміст став частиною системи пошуку.
1. Читання PDF-документів
- Процес: Система читає PDF-документи для подальшої обробки.
- Що відбувається: Зміст витягується з документа.
- Ілюстрація: Іконка PDF із стрілками, що вказують на екран комп'ютера з підписом "Обробка...".
2. Розбиття тексту на частини
- Процес: Документ розбивається на менші частини тексту.
- Що відбувається: Розбиття документа допомагає створювати кращі вбудовування.
- Ілюстрація: Документ розбитий на кілька малих частин.
3. Створення вбудовувань за допомогою OpenAI
- Процес: Кожна частина тексту перетворюється на вбудовування за допомогою моделей OpenAI.
- Що відбувається: Вбудовування представляють текст у векторному просторі.
- Ілюстрація: Логотип OpenAI поряд з числовими векторними уявленнями.
4. Зберігання та використання вбудовувань
- Процес: Вбудовування зберігаються в базі даних для пошуку за подібністю.
- Що відбувається: Система може швидко витягувати релевантну інформацію для майбутніх запитів.
- Ілюстрація: Стопки векторних ліній, що йдуть в одиницю зберігання або базу даних.
Пояснення коду
Нижче ми пояснюємо основні кроки в коді, який керує цією системою:
1.
Налаштування залежностей
from langchain.vectorstores import Cassandra
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.document_loaders import PyPDFLoader
- Мета: Імпортувати необхідні бібліотеки для зберігання векторів, створення вбудовувань та завантаження документів.
- Пояснення:
Cassandra
використовується для зберігання векторних баз даних,OpenAIEmbeddings
перетворює текст на вектори, аPyPDFLoader
витягує текст з PDF-файлів.
2. Завантаження PDF-документів
loader = PyPDFLoader("example.pdf")
documents = loader.load_and_split()
- Мета: Завантажити PDF-файл і розбити його на зручні для обробки частини тексту.
- Пояснення: Метод
load_and_split
розбиває документ на менші частини, що полегшує процес створення вбудовувань.
3. Створення вбудовувань
embeddings = OpenAIEmbeddings()
vectorstore = Cassandra(embedding=embeddings)
- Мета: Створити вбудовування для тексту та зберегти їх у базі даних Cassandra.
- Пояснення:
OpenAIEmbeddings
генерує числові уявлення тексту, а векторне сховищеCassandra
організовує ці вбудовування для швидкого пошуку за подібністю.
4. Виконання пошуку за подібністю
query = "What is the summary of section 2?"
results = vectorstore.similarity_search(query)
- Мета: Шукати в базі даних векторів контент, схожий на запит користувача.
- Пояснення: Запит перетворюється на вбудовування, які порівнюються з уже збереженими вбудовуваннями для знаходження відповідних співпадінь.
5. Виведення результатів
for result in results:
print(result)
- Мета: Вивести найбільш релевантні результати пошуку.
- Пояснення: Змінна
results
містить найкращі співпадіння, які виводяться користувачу.
Код- https://github.com/MahmoodInamdar/GenAi/tree/main/pdfQuery
Висновок
Поєднання взаємодії людини, розбиття тексту, вбудовувань і пошуку за векторами надає високо ефективну систему пошуку тексту. Розбиваючи документи на зручні вбудовування та використовуючи векторні бази даних для пошуку за подібністю, користувачі можуть швидко отримувати точну та релевантну інформацію.
Створення такої системи вимагає розуміння робочого процесу від запиту користувача до управління базою даних. Наведені діаграми та їхні пояснення допомагають візуалізувати цей складний процес. Не соромтеся використовувати або адаптувати ці ідеї у своїх проектах і ділитися своїм досвідом на платформах, таких як Medium!
Перекладено з: Building a Text Search System with Vector Databases and Embeddings