RAG流程:
線下:
1、文件載入
2、文件切分
3、向量化
4、向向量資料庫灌資料
線上:
1、獲取使用者問題
2、使用者問題向量化
3、檢索向量資料庫
4、將檢索結果和問題填充到pomp模板
5、用最終獲得的pomp呼叫LLM
6、最終由LLM生成回覆
本篇完成文件載入與切割(pdf載入與切割)
1、文件載入
載入PDF:
llama2.pdf
安裝pdf讀取包
pip install pdfminer.six
from pdfminer.high_level import extract_pages
from pdfminer.layout import LTTextContainer
#從pdf中提取文字extract_text_from_pdf
def extract_text_from_pdf(pdf_path,page_numbers=None,min_line_length =1):
paragraphs =[]
buff =''
full_text = ''
for i , page_layout in enumerate(extract_pages(pdf_path)):
if page_numbers is not None and i not in page_numbers:
continue
for element in page_layout:
if isinstance(element,LTTextContainer):
full_text += element.get_text() +'\n'
lines = full_text.split('\n')
for line in lines:
if len(line) >= min_line_length:
buff += (' '+line) if not line.endswith('-') else line.strip('-')
elif buff:
paragraphs.append(buff)
buff = ''
if buff:
paragraphs.append(buff)
return paragraphs
#以上是pdf讀取方法extract_text_from_pdf
#呼叫程式,並顯示前四行
paragraphs = extract_text_from_pdf('llama2.pdf',min_line_length=4)
for page in paragraphs[:4]:
print(page+'\n')
在terminal執行:py .\pdfread.py顯示結果
pdf載入與切割完畢。