LlamaIndex在https://github.com/jerryjliu/llama_index
文档在https://gpt-index.readthedocs.io/en/latest/guides/primer/usage_pattern.html
第一个坑,python3.7安装不了库
后来使用的是python3.8.7
关于LlamaIndex读取的原理
在python版的pdfchat中,可以看到调用了LlamaIndex的接口,通过llamahub的库里的PDR读取器来读取PDF文件
PDFReader = download_loader("PDFReader")
loader = PDFReader()
documents = loader.load_data(file=Path(file))
我一开始很疑惑,在https://llamahub.ai/上面我也没看到有PDFReader这个名字,怎么这里就能成功导入,后来通过跟踪代码,发现
代码会先检查文件夹里面有没有library.json,这个library.json我觉着相当于是llamahub上的读取器的列表,如果没有的话,会进行get请求获取,这里就是容易出现proxy代理问题的地方
https://raw.githubusercontent.com/emptycrown/loader-hub/main/loader_hub/library.json打开是这样
这里可以理解为什么是download_loader(“PDFReader”)了
PS:如果在download_loader()时候出现问题,那么断点一步步跟进去请求然后加上代理就好,这里加上代理就完事了其实,能成功用了
# 用clash的话
proxies = {
"http": "http://127.0.0.1:7890",
"https": "http://127.0.0.1:7890",
}
具体位置(如果要深究一下,llamahub下载的每个加载模块放在D:\Python387\Lib\site-packages\llama_index\readers\llamahub_modules或者D:\Python387\Lib\site-packages\llama_index\readers\llamahub_modules\file里,然而每个模块对应的文件夹里面,需要成功下载requirements.txt和base.py,缺一不可,下面就是代码里进行检查并下载的位置)
跟了几步PDFReader会发现,这个加载器的缺陷或许在于,他并没有分章节,而是一口气把PDF里的所有内容读了出来,这样一来章节之间的内容,可能会被分割成几块建索引,这样的效果可想而知并不理想
https://juejin.cn/post/7206950454097690680这样的操作才是更正确的
项目来源https://juejin.cn/post/7206950454097690680
先把项目clone下来了,在项目当前目录运行npm install
出报错,查了一下资料问了一下chatgpt觉得应该是nodejieba的安装问题,会涉及系统内使用的编译器等等一些问题,比较不好解决,于是采取使用另一个jieba分词的库来替代参考https://zhuanlan.zhihu.com/p/453803476
于是先把package.json中的"nodejieba": “^2.6.0”,去掉再运行npm install,然后再运行
都安装好之后把项目里的jieba库换成新安装的库,全局搜索