數據導入技術(文檔加載)

1. 簡單文本的讀取

用LangChain讀入txt文檔

# 讀取單個txt文件
import os
from langchain_community.document_loaders import TextLoader
# 獲取當前腳本文件所在的目錄
script_dir = os.path.dirname(__file__)
print(f"獲取當前腳本文件所在的目錄:{script_dir}")?
# 結合相對路徑構建完整路徑
file_dir = os.path.join(script_dir, '../../90-文檔-Data/黑悟空/設定.txt')

loader = TextLoader(file_dir)
documents = loader.load()
print(documents)

langchain會將文檔轉換為Document對象

LangChain Document對象和其中的元數據

LangChain中的各種Loader

Providers | 🦜?🔗 LangChain

用LangChain讀取目錄中的所有格式類型文檔

pip install unstructured
pip install "unstructured[image]"
pip install "unstructured[md]"
sudo apt-get install tesseract-ocr
pip install pytesseract?

用LangChain不同的Loader解析結果不同
from langchain_community.document_loaders import DirectoryLoader, TextLoaderimport os
# 獲取當前腳本文件所在的目錄
script_dir = os.path.dirname(__file__)
print(f"獲取當前腳本文件所在的目錄:{script_dir}") 
# 結合相對路徑構建完整路徑
data_dir = os.path.join(script_dir, '../../90-文檔-Data/黑悟空')# 加載目錄下所有 Markdown 文件
loader = DirectoryLoader(data_dir,glob="**/*.md",#loader_cls=TextLoader # 指定加載工具)
docs = loader.load()
print(docs[0].page_content[:100])  # 打印第一個文檔內容的前100個字符

用LlamaIndex讀取目錄中的所有文檔
from llama_index.core import SimpleDirectoryReader
# 使用 SimpleDirectoryReader 加載目錄中的文件
dir_reader = SimpleDirectoryReader("90-文檔-Data/黑悟空")
documents = dir_reader.load_data()
# 查看加載的文檔數量和內容
print(f"文檔數量: {len(documents)}")
print(documents[0].text[:100])  # 打印第一個文檔的前100個字符# 僅加載某一個特定文件
dir_reader = SimpleDirectoryReader(input_files=["data/黑神話/黑神話悟空的設定.txt"])
documents = dir_reader.load_data()
print(f"文檔數量: {len(documents)}")
print(documents[0].text[:100])  # 打印第一個文檔的前100個字符
用Unstructured工具讀取各式類型的文檔

Partitioning - Unstructured

Unstructured工具會將文檔轉換為element格式

from unstructured.partition.text import partition_text
text = "data/黑神話/黑神話悟空的設定.txt"
elements = partition_text(text)
for element in elements:
? ? print(element)

LangChain集成了各種Unstructured Loader


2. 結構化文本的讀取(JSON\網頁\Markdown)

使用LangChain的JSON Loader

  • 當輸入數據為 JSON 格式時,若需從嵌套復雜的 JSON 中提取特定字段或結構,可通過jq_schema定義提取規則(類似 SQL 查詢或 JSONPath 表達式)。
LangChain中的各種網頁加載器
#WebBaseLoader
#UnstructuredLoader

UnstructuredLoader – 父子元素的鏈接

from langchain_unstructured import UnstructuredLoader
from typing import List
from langchain_core.documents import Document
page_url = "https://zh.wikipedia.org/wiki/黑神話:悟空"
def _get_setup_docs_from_url(url: str) -> List[Document]:
? ? loader = UnstructuredLoader(web_url=url)
? ? setup_docs = []
? ? # parent_id = None ?# 初始化 parent_id
? ? # current_parent = None ?# 用于存儲當前父元素
? ? for doc in loader.load():
? ? ? ? # 檢查是否是 Title 或 Table
? ? ? ? if doc.metadata["category"] == "Title" or doc.metadata["category"] == "Table":
? ? ? ? ? ? parent_id = doc.metadata["element_id"]
? ? ? ? ? ? current_parent = doc ?# 更新當前父元素
? ? ? ? ? ? setup_docs.append(doc)
? ? ? ? elif doc.metadata.get("parent_id") == parent_id:
? ? ? ? ? ? setup_docs.append((current_parent, doc)) ?# 將父元素和子元素一起存儲
? ? return setup_docs ? ? ??

docs = _get_setup_docs_from_url(page_url)
for item in docs:
? ? if isinstance(item, tuple):
? ? ? ? parent, child = item
? ? ? ? print(f'父元素 - {parent.metadata["category"]}: {parent.page_content}')
? ? ? ? print(f'子元素 - {child.metadata["category"]}: {child.page_content}')
? ? else:
? ? ? ? print(f'{item.metadata["category"]}: {item.page_content}')
? ? print("-" * 80)

Markdown文檔的解析
UnstructuredMarkdownLoader

3. 解析圖中的文字(和圖的內容)(圖片\PPT\PDF中的圖)


4. 用各種工具解析PDF


5. 表格類數據的導入(CSV、DB、PDF中的表格)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/82929.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/82929.shtml
英文地址,請注明出處:http://en.pswp.cn/web/82929.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

靶場(二十)---靶場體會小白心得 ---jacko

老樣子開局先看端口,先看http端口 PORT STATE SERVICE VERSION 80/tcp open http Microsoft IIS httpd 10.0 |_http-title: H2 Database Engine (redirect) | http-methods: |_ Potentially risky methods: TRACE |_http-server-header:…

讓AI看見世界:MCP協議與服務器的工作原理

讓AI看見世界:MCP協議與服務器的工作原理 MCP(Model Context Protocol)是一種創新的通信協議,旨在讓大型語言模型能夠安全、高效地與外部資源進行交互。在AI技術快速發展的今天,MCP正成為連接AI與現實世界的重要橋梁。…

|從零開始的Pyside2界面編程| 用Pyside2打造一個AI助手界面

🐑 |從零開始的Pyside2界面編程| 用Pyside2打造一個AI助手界面 🐑 文章目錄 🐑 |從零開始的Pyside2界面編程| 用Pyside2打造一個AI助手界面 🐑?前言??調取Deepseek大模型??準備工作??調用API? ?將模型嵌入到ui界面中??…

如何利用Elastic Stack(ELK)進行安全日志分析

在以下文章中,我將解釋如何使用Elastic Stack(ELK)進行安全日志分析,以提高安全性和監控網絡活動。ELK是一個功能強大的開源日志管理和分析平臺,由Elasticsearch、Logstash和Kibana組成,適用于各種用例&…

網絡安全-等級保護(等保)3-0 等級保護測評要求現行技術標準

################################################################################ 第三章:測評要求、測評機構要求,最終目的是通過測評,所以我們將等保要求和測評相關要求一一對應形成表格。 GB/T 28448-2019 《信息安全技術 網絡安全等…

網絡通訊知識——通訊分層介紹,gRPC,RabbitMQ分層

網絡通訊分層 網絡通訊分層是為了將復雜的網絡通信問題分解為多個獨立、可管理的層次,每個層次專注于特定功能。目前主流的分層模型包括OSI七層模型和TCP/IP四層(或五層)模型,以下是詳細解析: 一、OSI七層模型&#…

gopool 源碼分析

gopool gopool是字節跳動開源節流的gopkg包中協程池的一個實現。 關鍵結構 協程池: type pool struct {// The name of the poolname string// capacity of the pool, the maximum number of goroutines that are actually working// 協程池的最大容量cap int32…

【工作記錄】接口功能測試總結

如何對1個接口進行接口測試 一、單接口功能測試 1、接口文檔信息 理解接口文檔的內容: 請求URL: https://[ip]:[port]/xxxserviceValidation 請求方法: POST 請求參數: serviceCode(必填), servicePsw(必填) 響應參數: status, token 2、編寫測試用例 2.1 正…

Linux中su與sudo命令的區別:權限管理的關鍵差異解析

💝💝💝歡迎蒞臨我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內容和知識,也可以暢所欲言、分享您的想法和見解。 推薦:「storms…

樂觀鎖與悲觀鎖的實現和應用

樂觀鎖與悲觀鎖:原理、實現與應用詳解 在并發編程和數據庫操作中,樂觀鎖和悲觀鎖是兩種重要的并發控制策略,它們在原理、實現方式和應用場景上存在顯著差異。下面我們將通過圖文結合的方式,深入探討這兩種鎖機制。 一、基本概念 1…

ios蘋果系統,js 滑動屏幕、錨定無效

現象:window.addEventListener監聽touch無效,劃不動屏幕,但是代碼邏輯都有執行到。 scrollIntoView也無效。 原因:這是因為 iOS 的觸摸事件處理機制和 touch-action: none 的設置有關。ios有太多得交互動作,從而會影響…

Redis主從復制原理二 之 主從復制工作流程

概述 本文緊接「Redis主從復制的原理一 之 概述」,詳細介紹了Redis的主從服務過程及原理。 主從復制工作流程 主從復制過程大體可以分為3個階段: 建立連接階段(即準備階段)數據同步階段命令傳播階段 階段一:建立連接階…

Markdown基礎(1.2w字)

1. Markdown基礎 這次就沒目錄了,因為md格式太亂了寫示例,展示那些都太亂了,導致目錄很亂。 (我是XX,出現了很多錯誤,有錯誤和我說) 1.1 Markdown簡介 Markdown是一種輕量級的標記語言&#…

JAVA-springboot log日志

SpringBoot從入門到精通-第8章 日志的操作 一、Spring Boot默認的日志框架 SpringBoot支持很多種日志框架,通常情況下,這些日志框架都是由一個日志抽象層和一個日志實現層搭建而成的,日志抽象層是為記錄日志提供的一套標準且規范的框架&…

Vue 渲染 Markdown 文件完全指南

前言 大家好,我是一諾,今天分享的是vue中渲染markdown文件。這是一個常見的需求,比如用戶隱私協議頁、技術說明等文檔頁面~ 本文將詳細介紹如何在 Vue 中渲染 Markdown 文件,并美化代碼塊的顯示效果。 基礎概念 什么是 Markdo…

Science Robotics:UCLA 賀曦敏團隊綜述自主軟體機器人

在機器人中實現類似生命的自主性一直是研究的方向,但目前大多數軟體機器人仍依賴外部刺激操控來產生持續運動。為了實現能夠自我調節感知 、 決策和驅動的自主物理智能(autonomous physical intelligence,API),一種有前…

基于LangChain構建高效RAG問答系統:向量檢索與LLM集成實戰

基于LangChain構建高效RAG問答系統:向量檢索與LLM集成實戰 在本文中,我將詳細介紹如何使用LangChain框架構建一個完整的RAG(檢索增強生成)問答系統。通過向量檢索獲取相關上下文,并結合大語言模型,我們能夠…

【Java學習筆記】SringBuffer類(重點)

StringBuffer(重點) 1. 基本介紹 (1)StringBuffer是可變的字符序列,可以對字符串內容驚醒增刪 (2)很多方法喝String相同,但StringBuffer可變長度 (3)Strin…

計算機網絡領域所有CCF-A/B/C類期刊匯總!

本期小編統計了【計算機網絡】領域CCF推薦所有期刊的最新影響因子,分區、年發文量以及投稿經驗,供大家參考! CCF-A類 1 IEEE Journal on Selected Areas in Communications 【影響因子】13.8 【期刊分區】JCR1區,中科院1區TOP …

AI-Sphere-Butler之如何啟動AI全能管家教程(WSL測試環境下適用)

環境: Ubuntu20.04 WSL2 問題描述: AI-Sphere-Butler之如何啟動AI全能管家教程(WSL測試環境下適用) 解決方案: 打開管家大模型 1.運行大模型在cmd下輸入: ollama run qwen2.5-3bnsfwny運行管家 數字人運行腳本&#xff…