LlamaIndex:轻松构建索引查询本地文档的神器( 五 )


其次,我们使用来进行中文文本分割 。默认情况下,llama-index对中文支持和效果都不太好 。幸运的是它允许自定义文本分割方式 。由于我们选用的文章是中文且标点符号也是中文的,所以我们选择了中文语言模型进行分割操作 。同时限制分割后的每个段落长度不超过 2048 个Token 。你可以根据实际处理文章内容和特性来自定义这些参数设置 。
from langchain.chat_models import ChatOpenAIfrom langchain.text_splitter import SpacyTextSplitterfrom llama_index import GPTListIndex, LLMPredictor, ServiceContextfrom llama_index.node_parser import SimpleNodeParser# define LLMllm_predictor = LLMPredictor(llm=ChatOpenAI(temperature=0, model_name="gpt-3.5-turbo", max_tokens=1024))text_splitter = SpacyTextSplitter(pipeline="zh_core_web_sm", chunk_size = 2048)parser = SimpleNodeParser(text_splitter=text_splitter)documents = SimpleDirectoryReader('./data/luxun').load_data()nodes = parser.get_nodes_from_documents(documents)service_context = ServiceContext.from_defaults(llm_predictor=llm_predictor)list_index = GPTListIndex(nodes=nodes, service_context=service_context)query_engine = list_index.as_query_engine(response_mode="tree_summarize")response = query_engine.query("下面鲁迅先生以第一人称‘我’写的内容,请你用中文总结一下:")print(response)
输出结果:
鲁迅先生在文章中以第一人称‘我’写了他在仙台学医期间的经历,包括他与藤野先生的关系、学习医学的困难和他最终离开医学专业的决定 。他对藤野先生的感激和敬仰一直延续至今 。
在构建索引时,并不会创建,因此索引的创建速度很快,也不会消耗大量的Token数量 。它只是根据您设置的索引结构和分割方式建立了一个列表形式的索引 。
接下来,我们可以让AI帮助我们对这篇文章进行总结 。同样地,提示语本身非常重要,所以我们强调文章是鲁迅先生以第一人称“我”来写的 。由于我们想要按照树状结构对文章进行总结,所以设置了一个参数= "" 。这个参数将会根据之前提到的树状结构来对整篇文章进行总结 。
实际上,它会将每个文本段落通过查询中的提示语进行摘要 。然后再通过查询中的提示语继续对多个摘要内容进行进一步总结 。
from llama_index import GPTTreeIndex# define LLMtree_index = GPTTreeIndex(nodes=nodes, service_context=service_context)query_engine = tree_index.as_query_engine(mode="summarize")response = query_engine.query("下面鲁迅先生以第一人称‘我’写的内容,请你用中文总结一下:")print(response)
输出结果:
鲁迅先生在这篇文章中讲述了他在日本留学期间的经历,包括他遇到的人和事,以及他的学习情况 。他特别提到了他的解剖学教授藤野严九郎,藤野先生对他的学习和讲义进行了指导和修改 。此外,鲁迅还提到了一些关于中国文化的误解,比如中国女人裹脚的问题 。最后,他还引用了《新约》上的句子,表达了他的思考和感悟 。
可以看到,我们只使用了几行代码就成功完成了对整篇文章的总结 。总体而言,返回的结果还算不错 。
七、 在多模态识别图片中的应用
不仅可以索引文本信息,还可以索引包含图片和插图等多媒体信息的书籍 。这就是所谓的多模态能力 。当然,实现这种能力需要借助一些多模态模型来将文本和图片联系在一起 。后面我们将专门介绍关于图像的多模态模型 。
现在我们来看一个官方样例库中提供的例子:拍下吃饭时的小票,并询问吃了什么、花了多少钱的情况 。