Узбагачэнне метаданымі ў RAG: фільтры, цытаты, свежасць і кантроль доступу
Чаму RAG-сістэма вяртае палітыку не таго рэгіёна і як метаданыя пра крыніцу, арганізацыю, час і бяспеку, дададзеныя пры загрузцы, выпраўляюць пошук.
Крыніцы: Metadata Enrichment in RAG: The Secret Ingredient for Better Retrieval
Падумаем, кампанія створыла чат-бота для генеравання тэкста з падтрымкамі збору інформацыі для сваей компаніі. Працавалі колькі дзён над выборам модэлі для імбеддынгу, настроўвалася векторная база дадзэнняў, а зверху размішвалася моцная LLM. Калі усё было задовалена, хтось увів запыт пра правіла дачы дзецячага прыпуску для спаведамальнікаў у еўропейскам офісе.
Адказ прыйшоў быстра: спаведамальнікі маюць права на 20 тыдзён адплатаўанага дзецячага прыпуску. Усё здавалася правільным. Але праз пераканальчыце з адпаведнымі даследнымі дакументамі выявілася, што атрыманы тэкст быў з правіл, прызначаных для спаведамальнікаў у Сяродземніях, а не ў Еўропе. Сістэма збору інформацыі знайшла частку пра дзецячы прыпуск, але не мела жадання, да каго рэгіону ён належыць, адтуды што абліковы кантэкст быў вытрыманы пад час разбівання на часткі і індэксавання.
Гэта адзін з найбольш распашчытых недастак у сістэмах RAG. Большасць размоваў пра RAG сфокусаваныя на эмбедынгах, стратэгіях чанкавання і вектарных базах дадзэнняяў, тады калі адна з найбольшых узлосных фактараў якасці аднаходжэння інфармацыі застаецца нез’важанай: адзычненне метададзэння. Метададзэнне дазволяе сістэме аднаходжэння інфармацыі разумець не толькі тое, што гаворыць чанк, але і тое, звядзе ён прыйшоў, да каго ён паслужыць, калі ён быў напісаны і як ён паслужыць сярод іншых матэрыялаў. У багатых корпаратыўных застосоўваннях яно аддзеляе рэзультат, які проста стосуецца тэмы, ад таго, які ёсць справядлівы.
Што пойшло не так у аднаходжэнні інфармацыі толькі на адзычнасць кантэнту
Паглядзіце, як зазвычай працюе сістэма RAG для пачаткуючых. Арганізацыя мае тры дакументы з правіламі: практыкум для працаваючых у США, европейскі практыкум і практыкум для рэгіону Азія-Тыхій океан. У всіх трох праўілах ёсць роздзіл пра дачу відпачынку за час вагітнасці. Пасля разбівання на фрагменты векторная база дадзеных зберагчыць майжэ ідэнтычныя рэчы, якія разлічаюцца толькі колькасцю: 20 тыдзён у аднам, 16 у іншам і 26 у трэцім.
Для мадэлі з вкладкамі гэтыя фрагменты ёсць абліжэннымі, адколі всі трох стосуюцца таго ж тэмы. Калі запытацца пра дачу відпачынку за час вагітнасці, сістэма можа вернуць будзь-кан з іх. Яна розумее сэмантычны значэнне, але не мае автаматычнага розумення бізнес-кантэксту. Самэлькі метаданы становяцца неабходнымі.
Што такое метаданы
Метаданы — гэта даны пра даны. У сістэме RAG яны опісваюць фрагмент, не будучы часткай яго основнага зместу. Яны включаюць усё, што ўтварае правду пра фрагмент тэксту, але не ўключаюць сам змест тэксту.
Возьміце фрагмент з пачатковага прыклада:
Employees are entitled to 20 weeks of paid maternity leave.
Адзін, гэты выказак ёсць чыстым і завершаным, а ў яму ёсць адказ. Але ён не паведамляе, з каго дакумента ён взяты, якую політыку якога рэгіону ён опісвае, хто падтрымлівае яго актуальнасць чы рэгулярна пераглядае. Тэкст адказвае на тое, што гаворыць політыка. Ён не можа адказаць, чы гэта правільная політыка для сітуацыі данай особы, што самэе і сталася, калі амерыканскі фрагмент быў вярнуты для запытання ў Еврапе.
Цяпер той самы фрагмент з даданымі мета-інформацыі:
{
"source": "EU_HR_Policy.pdf",
"region": "Europe",
"department": "Human Resources",
"last_updated": "2025-03-15"
}
Ні адзін з эўсіх чатырох полей не ўскладневае рэчы. Слова „Еўропа“ і назва файла нідзе не з’являюцца ў самым тэксце. Аднак алгорытм для пошуку цяпер мае значна больш за меры для працы. Частка тэксту несе кантэкст, які можна выкарыстоўваць для пошуку, фільтрацыі, ранжыравання і стварэння адпаведзі, і гэты кантэкст знаходзіцца па боку ад зместу, не змешваючыся з яным.
Гэтае аддзеленне ёсць адказом за сілу метаданаў. Мадэль эмбедынгу за сваёй прыродай кодуе толькі page_content часткі тэксту і ніколі не бачыць метаданаў. Метаданы не прызначаны для таго, каб вплываць на тое, як частка тэксту будзе імбеддавана. Яны існуюць таму, каб усі іншы элементы сістэмы, укладаючы фільтры, перакананні ў доступе, цітаты і логіку ранжыравання, мелі конкрэтны аб’ект для дзеяння, незалежна ад таго, якіх вывадаў дасягла мадэль эмбедынгу ў паводзе з семантычным супаданнем.
Простая ментальная мадэль: метаданы — гэта сукупнас пазначэнняў, якія прыкладзеныя да кожнага фрагмента знанняў. Без пазначэнняў кожны фрагмент ёсць проста значэннем, якое плавае без кантэксту, і для аднаходжэння інформацыі неабходна толькі спадзявацца на сэроднечнасць, як гэта было тады, калі тры рэгіональныя політыкі выглядалі па-праблемнаму ідэнтычна для модэлі эмбедынгу. З пазначэннямі спадзяванне заменяецца чымось, што сістэма можа безпосерэдна пераканацца. Запыт перацяляецца з таго, чы рэагмент звучыць сэродні запыту, на тое, чы ён дзе-нават належыць да сітуацыі, пра якую ставіцца запыт.
Як метаданы павышаюць эфектывасць аднаходжэння інформацыі
Верніцеся да прыкладу з дзеямі па час вагітнасці і ступіце да этапу аднаходжэння інформацыі з метаданамі і без іх.
Без метаданых запіт працавацоў з Еўропы адбываецца ўжо ў всій базе вектарных дадзеных. Уваогуле лічыцца толькі семантычная сэмблівнасць, і адтуды, калі тры рэгіональныя часткі практычна ідэнтычныя эмбедынгу, прыстрой для пошуку можа з упэўненасцю вернуць тэкст правіла з няправільнага рэгіону. У рэзультатах сэмблівнай оцэнкі няма ніч, што бы натыкалася на проблему.
Сістэма, якая мае метаданы, можа заместа таго застаўіць фільтр яшчэ до пошуку за сэмблівнасцю або разам з яным:
filter = {
"region": "Europe"
}
Зараз пошук адаптаваны толькі для частак, пазначаных як Еўропа. У зменшэнні колькісці даследжваных дакументаў вікорыстоўваецца толькі адпаведны ўзбор, таму канкурэнтныя кандыдаты становяцца меншымі, прычым схожасць не мае можлівасці зробіць неправільны выбор.
Места, дзе выконваецца фільтрацыя, маюць значэнне. Большасць прыменных баз дадзеных вектараў падтрымлівае прадзейнавую фільтрацыю, якая спачатку застосоўвае фільтр метададзэнаў, тады пошук схожасці адбываецца толькі над адпаведнымі частакамі. Гэта быстрэй і надзейней, чым паслядзейнавая фільтрацыя, пры якой пошук схожасці адбываецца над усім, а рэзультаты, якія не падходзяць, апускаюцца пазней. Паслядзейнавая фільтрацыя можа марнаваць вычысловы рэсурсы на нерэлевантныя часткі і, у экстрэмальных случаях, вяртаць менш рэзультатаў, чым было запрасана, калі занадта многія топавыя рэзультаты апускаюцца пазней. Qdrant і Weaviate абодва створаны для падтрымкі эфектывнай прадзейнавай фільтрацыі.
Ёсць конкрэтны апісанне сцэнарыю выплыву за час берплыва, ад начала да канца:
from sentence_transformers import SentenceTransformer
import numpy as np
embedding_model = SentenceTransformer("all-MiniLM-L6-v2")
chunks = [
{"text": "Employees are entitled to 20 weeks of paid maternity leave.", "region": "United States"},
{"text": "Employees are entitled to 16 weeks of paid maternity leave.", "region": "Europe"},
{"text": "Employees are entitled to 26 weeks of paid maternity leave.", "region": "Asia-Pacific"},
]
for c in chunks:
c["embedding"] = embedding_model.encode(c["text"])
query = "What is the maternity leave policy for employees in the European office?"
query_embedding = embedding_model.encode(query)
def search(chunks, query_embedding, region_filter=None):
candidates = chunks if region_filter is None else [c for c in chunks if c["region"] == region_filter]
scored = [(np.dot(query_embedding, c["embedding"]), c) for c in candidates]
scored.sort(key=lambda x: x[0], reverse=True)
return scored[0][1]
print("Without metadata filter:")
result = search(chunks, query_embedding)
print(f" Returned: '{result['text']}' (region: {result['region']})")
print("\nWith metadata filter (region='Europe'):")
result = search(chunks, query_embedding, region_filter="Europe")
print(f" Returned: '{result['text']}' (region: {result['region']})")
Гэта безпасэчна воспамінае прычыну пачатковага нявярнага рэзультата. Без фільтра сама толькі сэмліранасць выбірае амерыканскі фрагмент проста таму, што ў яго балы трохі вышэй, а не таму, што ён падходзіць да запітання. Калі застосоўваецца фільтр па рэгіоне, прастор для пошуку скурчваецца да аднаго еўропейскага фрагмента, і вярны адказ вяртаецца, незалежна ад таго, насколькі сэмлівыя іншые эмбеддынгі.
Точнасць значна падыходзіць, а разлік павялічваецца ў меру зростання корпуса. Серэд трох дакументаў мадэль эмбеддынга можа за рахунак простага шчасця паставіць вярны дакумент на першае месца. У разе сотняў дакументаў, якія павярнуцься да разных рэгіонаў, аддзелаў і гадоў, сама сэмліранасць стае ненадзеянай, і фільтраўванне на аднойчыных дадзенах — гэта ўжо ўсё, што можа дапамагчы адсягнуць усё тое, што не належыць.
Чатыры відэры тыпа аднойчыных дадзенаў, якія варта маты
Не всі метаданы ўсё роўна корыстны. У рэальных корпаратыўных сістэмах часта з’являюцца чатыры катэгорыі, і кожная з іх рашае іншую проблему.
Метаданы выхаднага кантэнту
Ёні адпавядаюць на пытанне, звядзе гэтая інфармацыя. Тыповыя полья – гэта назва файлу, номер стороніцы, URL і ID дакумента. Гэта мае значэнне, калі корыстнікі хочуць маты цітаты або хочуць пераканацца ў правільнасці адпаведзі. Ось як стварыцца цітата:
def format_citation(metadata):
return f"Source: {metadata['source']}, Page {metadata['page']}"
chunk_metadata = {"source": "Employee_Handbook_2025.pdf", "page": 42}
print(format_citation(chunk_metadata))
Калькава:
Source: Employee_Handbook_2025.pdf, Page 42
Гэтыя даныя цытата не ствараюцца праз адгадванне LLM пра тое, звядзе паўтараецца адпаведзь. Гэта ўпэўнены пошук па полях, якія былі зафіксаваны пад час завантажэння дакумента. Доверлівасць вырастае, калі корыстувальнікі можаць праследаваць інфармацыю да яе паходжання, а гэта залежыць ад таго, чы рэткаметаданыя зберагаюцца ад самага прыёму да заканчэчнай адпаведзі.
Арганізацыйныя рэткаметаданыя
Знанні падпрыемства зазвычай дзельняцца между аддзеламі і бізнес-ўзеламі, такімі як кадры, фінансы, права і інжынерыя. Такое пазначэння дзеяння дазволяе пры пошуку сузіць яго да рэлевантнай часткі бізнесу пры выкананні аналізу сэмабільнасці, выкарыстоўваючы той самы механізм фільтрацыі, як і выкладзена вышэ:
filter = {"department": "Finance"}
Пошук інжынерных дакументацыйяў на адпаведзь на фінансавыя пытанні — гэта варыцця часу, але існуе ўсё ж другая проблема: запытка з фінансавай сферы, аналізаваная на тле інжынерных тэкстаў, можа прынесці некарэктны, неактуальны фрагмент, які пахіцельна добра паспелае за показнікамі прыроднай сэмантычнай супарадненасці.
Часовыя метаданы
Інформацыя зміняецца з часам — калі адкорэгуюцца правілы, эвалююцья процедуры і зміняюцца рэгламенты. Без часовых пазначэнняў сістэма пошуку не можа адразніць актуальнае правіла ад застарэлага. Яна ведае, якія фрагменты сэмантычна блізкія да запыткі, але не ведае, якія з іх яшчэ чынныя.
Разглядзім два фрагменты пра адно і тое ж правіла з разнымі датамі адкорэгування:
chunks = [
{"text": "Employees receive 15 vacation days per year.", "last_updated": "2023-01-10"},
{"text": "Employees receive 20 vacation days per year.", "last_updated": "2025-03-15"},
]
Ўбы два варыянты, верагацэю, даюць парадоксальнае рэшчэнне па кэптанае пра канцы дзеяння, таму што тэматыка і формулаванне ў яных майжэ ідэнтычныя. Зберагчычча часавую пазначку, сістэма можа намеравана паспрабаваць выбраць новейшы варыянт, а не заліць гэта на вялікай прымусе:
most_recent = max(chunks, key=lambda c: c["last_updated"])
print(most_recent["text"])
Рэзультат:
Employees receive 20 vacation days per year.
Гэта мае важна значынь у галузях, дзе інфармацыя часта зміняецца. Без явнай пераканальніцы па актуальнасці старая правілле і яе замена функцыянальна не відрóżнімыя для прыстрою для пошуку, які бачыць толькі сэроднечнасць.
Метаданы безпекі
Багатыя організацыі патрабуюць кантролю доступу на адміністрацыю на адміністрацыю ролей: дакументы кадровага апарату доступны толькі для спецыялістаў кадровага апарату, фінансавыя звясткі — толькі для фінансавых каманд. Метаданы дапамагаюць гарантаваць гэта. Фрагмент можа мець такія полья:
chunk_metadata = {
"access_level": "confidential",
"allowed_roles": ["HR_Manager", "HR_Admin"]
}
Перад адгэтуваннем сістэма парабялее ролю карыстальніка, які выканаў запіт, з ролямі, якім разрашана пераглядаць даны часткі:
def can_access(user_role, chunk_metadata):
return user_role in chunk_metadata["allowed_roles"]
print(can_access("HR_Manager", chunk_metadata)) # True
print(can_access("Engineering", chunk_metadata)) # False
Рэзультат:
True
False
У рэальнай лініі апрацоўкі гэтыя пераконтрольванні выкананыя як фільтры пад час адчынення дакумента, а не пасля таго, як LLM ужо мае ў сабе ўмест. Фрагмент, які корыстувач не мае права бачыць, ніколі не павінен дасягнуць пункту з запітам. Без метаданных стварыць безпечны RAG ўскладнена задача, адтуды што да кожнага фрагмента не прыўязваецца надзеяны сігнал, які сістэма могла бы парабіць з правамі корыстувача, перш чым адначыніць яго.
Дадаванне метаданных пад час адчынення
Метаданныя не з’яўляюцца самі по сабе. Іх трэба дадаць пад час адчынення дакумента, і калі іх там не зафіксаваць, іх нельга вярнуць, таму што калі фрагмент дасягае этапу укладкі або зберагчыка, звязак з яго вучэннем ужо знік.
Возьмім PDF з правіламі кадровай політыкі, які завантажваецца. Звычная лінія апрацоўкі адчынення выкананае гэтыя крокі па рэчы:
- Завантажыць дакумент.
- Выявіць тэкст.
- Разбіць умест на фрагменты.
Метаданы даўаюцца пасля разбівання на часткі, а не раней, і парадак мае значэнне. Метаданы павінны быць прыкрэпленыя да кожной окрэмай часткі, на якія падзеляецца документ, а не разам да самага документа.
from langchain_core.documents import Document
doc = Document(
page_content="Employees receive 20 weeks of maternity leave.",
metadata={
"department": "HR",
"region": "Europe",
"source": "EU_HR_Policy.pdf"
}
)
print(doc.page_content)
print(doc.metadata)
Рэзультат:
Employees receive 20 weeks of maternity leave.
{'department': 'HR', 'region': 'Europe', 'source': 'EU_HR_Policy.pdf'}
Гэта проста, калі дакумент настацькі, ўсё ў однай частцы. Аднак рэальныя дакументы дзелюцца на многа частак, і метаданы неабходна копіюваць у кожную з іх:
def chunk_with_metadata(document, chunk_size=60):
text = document.page_content
chunks = [text[i:i+chunk_size] for i in range(0, len(text), chunk_size)]
return [
Document(page_content=chunk_text, metadata=document.metadata)
for chunk_text in chunks
]
source_doc = Document(
page_content="Employees receive 20 weeks of maternity leave. Eligibility begins after six months of employment.",
metadata={"department": "HR", "region": "Europe", "source": "EU_HR_Policy.pdf"}
)
chunked_docs = chunk_with_metadata(source_doc)
for i, chunk in enumerate(chunked_docs, 1):
print(f"Chunk {i}: {chunk.page_content!r}")
print(f" Metadata: {chunk.metadata}\n")
Рэзультат:
Chunk 1: 'Employees receive 20 weeks of maternity leave. Eligibility b'
Metadata: {'department': 'HR', 'region': 'Europe', 'source': 'EU_HR_Policy.pdf'}
Chunk 2: 'egins after six months of employment.'
Metadata: {'department': 'HR', 'region': 'Europe', 'source': 'EU_HR_Policy.pdf'}
Хоча гэтыя два фрагмента ўтвараюць адзінокія часткі аднае дакумента, кожны з іх успадковвае ідэнтычныя значэнні рэгіону, аддзела і вучэння. Самэ гэта дазволяе працаваць прыкладам фільтрацыі, паказаным вышэй: незалежна ад таго, як быў раздзелены тэкст, кожны фрагмент все равно можа паказаць, што ён ўскладнівае еврапейскую політыку у сферы кадраў. Кожны з іх цяпер мае цінны кантэкст паляглы ў яго структуры, за дапамогою выкарыстоўвання методаў адзысквы, фільтрацыі і цітатаў.
Дазволаеце LLM генераваць метаданы
Сучасныя сістэмы RAG все чырэз больш выкарыстоўваюць LLM-ы для стварэння метаданаў, замест таго, каб паследаваць выключна ручнаму прызначэнню тагоў. Уместа таго, каб чалавек чытаў кожны дакумент і ручна прызначаў яму меткі, мадэль можа аналізаваць дакумент і вылучаць такія пытанні, як тэматыка, аддзел, катэгорыя, ключоўыя словы і апуск. Код падаў ніжэй паказвае запіт, які гэта стварае, а не толькі выходны рэзультат:
def generate_metadata(text, llm):
prompt = f"""Analyze the following document and return metadata as JSON with these fields:
topic, category, and keywords (a list of 3-5 relevant terms).
Document:
{text}
Respond with only the JSON, no other text."""
response = llm.generate(prompt)
return response
sample_text = "Employees are entitled to 20 weeks of paid maternity leave, with eligibility beginning after six months of continuous employment. Additional unpaid leave may be requested with manager approval."
# In practice, llm.generate() would call an actual model (Claude, GPT, etc.)
# Below is the kind of output this prompt is designed to produce:
example_output = {
"topic": "Employee Benefits",
"category": "HR Policy",
"keywords": ["maternity leave", "eligibility", "employee benefits"]
}
print(example_output)
Рэзультат:
{'topic': 'Employee Benefits', 'category': 'HR Policy', 'keywords': ['maternity leave', 'eligibility', 'employee benefits']}
Этыя метаданыя прыкладываюцца да чака ровна так, як і метаданыя, якія былі прызначаны вручную. Разлікаецца толькі тое, хто прызначае значэнні. Рэзультатам ёст толькі болей насыцаны ўпрабавка адзыскання з меньшым колькам ручной працы, ўсабліва ў масштабных сітуацыях: ручная атрыбутацыя калякоў дакументаў ёсць можлівай, але атрыбутацыя дзесяткаў тысяч чакаў у развіваючайся базе знанняях зазвычай не ўможлівлена. Вядомае колькісце прыглыбленых тэхналогій спрыяе выконанню такога крока як часткі працы падчас прадзеяўнай апрацоўкі, якая выконваліцца адной раз пры прыйманні дадзеных, разам з разбіваннем на чакі і стварэннем вкладанняў.
Адна практычная прытаманнасць: адбавайце практычную перапрацоўку выходных дадзеных, створаных LLM, усабліва на пачатковым этапе. Мадэль іноды можа прызначыць тэму або катэгорыю, якая не адпавядае рэальнаму зместу, і на вядмэннае аднаго дакумента, які быў неправа атрыбутаваны чалавекам, аўтаматызаваная памылка можа тыха распрасціцца на многія дакументы адной час, калі запіт мае сістэматычную слепую пляму.
Фільтрацыя метаданых і гібрыднае адзыскання
Метаданыя становяцца як najбольш эфектывныя, калі іх аднаёсць з семантычным пошукам, хоча точна настройка гэтага аднаёсць таксама дапамагае, адколькі тэрмін «гібрыдны» выкорыстоўваецца для паўтараючыхся тэхнік у RAG.
У строгам сэнсе, гібрыдны пошук означае сумешчанне двух методаў пошуку — ўжоўтучнага векторнага пошуку і рыхлага пошуку за ключавымі словамі (BM25) — якія працуюць паралельна і зліваюць рэзультаты. Фільтрацыя метаданых — гэта ўжо іншая рэч. Гэта не ўжо аднойчы метод пошуку, а спосаб прыбліжэння колькасці кандыдатаў да мінімуму яшчэ до або праз аднойчы з вялікіх методаў, або ўжо існуючых ўжытоўных комбінацый методаў.
Пошук на адрэсе вектараў выявляе, якія фрагменты сэмантычна супадаюць з запітам. Фільтрацыя метадаў выявляе, якія фрагменты належаць да правільнай катэгорыі, рэгіону, аддэлы чы ў пэўны перыяд часу. Гэтыя два пытання ўзаіндыпэнтныя, таму фільтр такі ж эфектыўны як і з звычайным пошукам на адрэсе вектараў, толькі з BM25 чы з аблеглым гібрыдным апаратам пошуку. Цэлая гэтая структура ўтварае дадатковы слой, які можа быць дапаможным для будзь-кага з пераказаных спосабаў пошуку.
Разам яны значна падымаюць якасць пошуку, як паказвае прыклад адпачынку за час вагітнасці. Сістэма перастае слепа шукаць у всій базе знанняў і інтэлігентна шукае ў найболей рэлевантным падскупе, пры чым толькі ступень супадання вялічыць рангінг у гэтым ужэ скармаленым, правільным скупе. Самэльга сучасныя корпоратыўныя сістэмы RAG рэдка паслугоўваюць толькі эмбедынгамі: эмбедынгі вялічыць, што ёсць супадаючым, але метадаў вялічыць, што можа быць прыйнятае для расследавання.
Занедбаны элемент
Багатыя арганізацыі вкладаюць большыя зусілля ў выбір модэляў для эмбедынгу і баз дадзэнняў у вектарнай форме. Шырокі выбор мае значэнне, але на практыцы пошук часта не выходзіць за межы з гораздка простэйшай прычыны: важлівая кантэкстуальная інфармацыя ніколі не была зафіксавана, незалежна ад таго, насколькі хорашы модэль чы база дадзэнняў.
Уявіце бібліятэку, у якой кожная кніга пасяродзіла свой заглавле, автара, дату выдання і катэгорыю, застаўшыся толькі суровым тэкстам. Знайсці ўсё будзе вельмі складна, нават з выдатной сістэмай розмішчэння кніг і каталагам для пошуку. Зберагчы фрагменты без метададзэння — тое ж самае: інфраструктура пошуку можа быць бездоганной, але не будзе дапамагаць, калі няма кантэксту, на які ёй трэба адпрацавваць інфармацыю.
Метаданы забезпечваюць структуру архітэктуры, якая дазволяе эфектываўна шукаць інфармацыю ў вялікіх базах знанняў. Калі колькасць дакументаў зрастае з сотняў да мільйонаў елементаў, значэнне метаданаў стае ўсё болей важлівым. У малых масштабах мадэль укладання можа проста па шчасцю паставіць правы элемент на першае месца, як гэта практычна сталася з трыма дакументамі з правіламі. У рэальных корпоратыўных базах знанняў такое шчасце шыбка заканчываецца. Багатыя корпоратыўныя каманды адзвяртаюць увагу, што павышэнне якосці метаданаў дае большыя рэзультаты, чым пераход на новейшую мадэль укладання, што варта памятаць, вялікую увагу прыдзеляючы выбору мадэляў, а мінімальную — стратэгіі метаданаў.
Вывад
Адаптаванне фрагментаў метаданнымі ўваходзіць у тыя найлепшыя спосабы паспрабоўкі паўпрынцыповага пасілкання на інформацыю, і яму прадаёцца значна менша увага, чым эмбедынгам, базам дадзеных у вектарнай форме і большым мовным мадэлям. Эмбедынгі фіксуюць значэнне контэнту, тады як метаданныя фіксуюць кантэкст навакола яго, і разам яны дазволяюць сістэме знаходзіць не толькі схожую інформацыю, але і самую правільную. Будзь то сачыце за выкананнемамі, фільтрацыя па рэгіоне, забезпечэнне безпекі, фіксацыя часовых метак або дадзенне атрыбутаў, напісаных AI, метаданныя дапамагаюць ператворыць простую сістэму пошуку на готовую да выкарыстоўвання платформу знанняў.
Таму, калі ацэнюеце праграмную схему RAG, пытанне не толькі ў тым, які мадэль эмбедынга выкарыстоўваць. Яго таксама трэба разглядаць у тым, якія метаданныя трэба прыўязаць да фрагментаў, таму ў багатых рэальных сістэмах лепшыя метаданныя значыць лепшы пошук, лепшы пошук значыць лепшыя адпаведзі, а лепшыя адпаведзі — лепшы досвід для корыстувачаў.
Спаднія матэрыялы
- Vectorless RAG: Як PageIndex чытае дакументы без вкладкі — Пошук за вектарамі дзеліць дугі дакументы на часткі і втрачае кантэкст. Пазірце, як індэкс у форме дрэва, апоўнены вычынкамі, знаходзіць адпаведныя адказы ў складных звярненнях, з прыкладамі коду.
- Практычныя заўважэнні: Праектаванне сістэм AI за дапамогою Prompt Engineering: RAG, памяць, інструменты — Паследовны апіс практычных заўважэнняў: Праектаванне сістэм AI за дапамогою Prompt Engineering: RAG, памяць, інструменты: контракты, перакананні і блокі коду, якія можна прыкласты командам, якія вікорыстоўваюць гэты падход.