Можливо, у цьому випадку ви знайдете мову графічних запитів доречною. Neo4J є золотим стандартом для GraphQL
. Ви також можете отримати основи цього на їхніх безкоштовних курсах тут. GraphQL
може допомогти вам засвоїти LLM і змусити розкидані знання в різних документах працювати разом. Це представляє дані як вузли та їхні зв’язки з ребрами. Таким чином, головна перевага цього полягає в тому, що ви можете задавати запитання, які прямо не прописані ніде в документах. Наприклад, для короткого документа ви можете отримати такий графік:
(Автор зображення: https://towardsdatascience.com/integrate-llm-workflows-with-knowledge-graph-using-neo4j-and-apoc-27ef7e9900a2)
Тепер на основі даних можна зробити запит, щоб знайти фільми, де і Кіану Рівз, і Керрі-Енн Мосс виступила. Тепер ця інформація може не бути прямо прописана в доступних документах. Але навіть після цього ми можемо буквально створювати подібні ідеї/знання.
Кроки перетворення вашої бази знань на взаємопов’язане представлення графів такі (спрощені):
Навчання
- Чанкінг Документи
- Передайте кожен фрагмент LLM, щоб сформувати триплет. На основі наявної інформації з одного блоку можна сформувати кілька триплетів. Трійки – це не що інше, як 3-кортежі, тобто (суб’єкт, відношення, об’єкт). Наприклад: (Keanu Reeves, ACTED_IN, The Matrix Reloaded), (Lily Wachowski, DIRECTED, The Matrix Reloaded) тощо.
- Ці триплети буде збережено в базі даних графіків. Де суб’єкти та об’єкти є вузлами, а зв’язки – ребрами.
Висновок
- Під час висновку запит користувача буде перетворено на запит графа, надавши схему графа за допомогою LLM.
- запит буде використано для отримання відповідних результатів із бази даних.
- Результуючі дані знову буде перетворено на природну мову за допомогою LLM.
Більше
GraphQL
якNeo4J
підтримує індексування, включно з векторним індексуванням, яке дозволить вам не лише шукати пряму відповідність, але й шукати векторний вбудований пошук у базі даних.- Він також підтримує індексування на основі ключових слів, і ви навіть можете використовувати його разом із векторним вбудованим індексуванням.
- Популярні фреймворки, такі як LangChain має вбудований інтеграція підтримка для цього. І це для Бібліотека Llama-Index.
- Підтримує побудову графіків з інших баз даних, як-от MySQL. Таким чином, це допоможе вам створити цілісне представлення всіх даних у вашому домені.
Міркування
- Немає жодної «срібної кулі», яка могла б працювати в усіх сценаріях.
GraphQL
також має деякі проблеми, очевидні проблеми: накладні витрати на створення графічної бази даних, перетворення з природної мови наGraphQL
і навпаки.- Згенерований запит може стати недійсним і нічого не отримати.
- Згенерований запит може бути дійсним, але константні значення можуть не бути присутніми безпосередньо в базі даних, і зрештою ви можете нічого не мати. Наприклад, коли згенерований запит містить орфографічні помилки/синоніми терміна, який ви шукаєте в базі даних.
- Розмір контексту може не дозволити вам створити відповідний кортеж, якщо пов’язані терміни знаходяться далеко один від одного.
- Може бути згенеровано кілька майже подібних трійок, які можна було б скоротити до однієї трійки.
- Наскільки я знаю,
Neo4J
Community Edition може мати лише одну стандартну базу даних. Щоб створити більше однієї бази даних, вам може знадобитися скористатися платною версією. У версії спільноти також відсутні додаткові функції безпеки.