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


%pip install torch transformers sentencepiece Pillow
from llama_index import SimpleDirectoryReader, VectorStoreIndexfrom llama_index.readers.file.base import (DEFAULT_FILE_READER_CLS, ImageReader,)from llama_index.response.notebook_utils import (display_response, display_image,)from llama_index.indices.query.query_transform.base import (ImageOutputQueryTransform,)# NOTE: we add filename as metadata for all documentsfilename_fn = lambda filename: {'file_name': filename}receipt_reader = SimpleDirectoryReader(input_dir='./data/image', file_metadata=http://www.kingceram.com/post/filename_fn,)receipt_documents = receipt_reader.load_data()
我们首先使用上面定义的自定义image 和 来摄取我们的收据图像 。这样我们就可以得到图像文档而不仅仅是文本文档 。
我们像往常一样构建一个简单的向量索引,但与以前不同的是,我们的索引除了文本外还包含图像 。
receipts_index = VectorStoreIndex.from_documents(receipt_documents)
然后,我们只需要用自然语言提出问题来查询索引,就能找到对应的图片 。在提问时,我们专门设计了一个sform,主要是为了在输出结果时,在图片外部添加
标签以便在中显示 。
from llama_index.query_engine import TransformQueryEnginequery_engine = receipts_index.as_query_engine()query_engine = TransformQueryEngine(query_engine, query_transform=ImageOutputQueryTransform(width=400))receipts_response = query_engine.query('When was the last time I went to McDonald\'s and how much did I spend?',)display_response(receipts_response)
输出结果:
【LlamaIndex:轻松构建索引查询本地文档的神器】The last time you went to McDonald's was on 03/10/2018 at 07:39:12 PM and you spent $26.15.
在及整个大语言模型生态系统快速发展的背景下,llama-index库也在迅速迭代 。在我自己使用过程中,也遇到了各种小错误 。对于中文支持也存在一些小缺陷 。不过,作为一个开源项目,它已经拥有了很好的生态系统,尤其是提供了许多选项 。这些选项包括PDF、ePub等电子书格式以及、、等外部数据源和API接入数据甚至本地数据库的数据 。您可以在 .ai 上查看社区开发的各种不同数据源格式的 。
八、总结与展望
通过本文的介绍,您已经掌握了如何轻松上手使用 llama-index 这个包 。借助它,您可以迅速将外部资料库转换为索引,并通过提供的查询接口向文档提问 。同时,您还可以利用分片和树形结构管理索引来生成摘要 。
llama-index 不仅具备丰富的功能,而且作为一个库,它仍在不断发展和完善 。它极大地便利了与大语言模型相关的应用程序开发 。相关文档可在官方网站查阅,代码也是开源的 。如遇问题,您还可以直接查看源代码以深入了解 。
实际上,llama-index 提供了一种创新的大语言模型应用设计模式 。它通过先为外部资料库建立索引,再在每次提问时从资料库中搜索相关内容,最后利用AI的语义理解能力基于搜索结果回答问题 。
在索引和搜索的前两步,我们可以使用的接口,也可以使用其他大语言模型的接口,或者使用传统的文本搜索技术 。只有在问答的最后一步,才必须使用的接口 。我们不仅可以索引文本信息,还可以通过其他模型将图片转换为文本并进行索引,实现所谓的多模态功能 。
通过今天给出的几个例子,希望您也能开始建立自己的本地资料库,并将自己的数据集交给AI进行索引 。这样您就能拥有一个专属于自己的AI了 。