利用元数据提取提升文档索引与理解
在处理长文档时,文本块可能缺乏必要的上下文来区分与其他相似的文本块。手动标记每个数据集或知识库中的文本块是一种解决方法,但对于大量或不断更新的文档来说,这既费时又费力。
为了解决这个问题,我们可以利用大型语言模型(LLMs)来提取与文档相关的某些上下文信息,以帮助检索和语言模型区分相似的段落。本文将介绍如何使用LlamaIndex的全新元数据提取器模块来实现这一目标。
安装与配置
首先,确保安装了必要的库并配置了OpenAI API密钥:
%pip install llama-index-llms-openai
%pip install llama-index-extractors-entity
!pip install llama-index
import nest_asyncio
nest_asyncio.apply()
import os
import openai
os.environ["OPENAI_API_KEY"] = "YOUR_API_KEY_HERE"
from llama_index.llms.openai import OpenAI
from llama_index.core.schema import MetadataMode
llm = OpenAI(temperature=0.1, model="gpt-3.5-turbo", max_tokens=512)
创建节点解析器
我们创建一个节点解析器,用于提取文档标题和与文档块相关的假设性问题嵌入:
from llama_index.core.extractors import (
SummaryExtractor,
QuestionsAnsweredExtractor,
TitleExtractor,
KeywordExtractor,
BaseExtractor,
)
from llama_index.extractors.entity import EntityExtractor
from llama_index.core.node_parser import TokenTextSplitter
text_splitter = TokenTextSplitter(
separator=" ", chunk_size=512, chunk_overlap=128
)
class CustomExtractor(BaseExtractor)