成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

LangChain4j如何自定義文檔轉換器實現數據清洗?

人工智能
文檔轉換器只是實現生產級別 RAG 的實現步驟之一,生產級別的 RAG 實現的步驟通常包含:文檔加載器、文檔解析器、文檔轉換器、文檔分詞器、文檔向量化、向量持久化、向量檢索等過程,而且每個過程可能都要反復調優,才能實現生產級別的準確性要求,所以道阻且長,吾輩尚需努力啊!

LangChain4j 提供了 3 種 RAG(Retrieval-Augmented Generation,檢索增強生成)實現,我們通常在原生或高級的 RAG 實現中,要對數據進行清洗,也就是將外接知識庫中的原數據進行噪音去除,留下有價值的信息。

例如在帶有 HTML 標簽的文本中,HTML 標簽就是噪音,他對于搜索結果是沒有任何幫助,甚至會影響查詢結果的,因此我們就需要將 HTML 標簽進行清除。

那問題來了,怎么進行數據清洗呢?

這就要使用到文檔轉換器了,那么在不使用 LangChain4j 內置文檔轉換器的前提下(因為業務需求是復雜且多變的,因此很多時候我們需要使用自定義文檔轉換器才能實現預期的效果),那怎么實現呢?接下來一起來看。

自定義文檔轉換器

以去除文本中的 HTML 標簽為例,LangChain4j 中自定義文檔轉換器的實現步驟如下:

  1. 新建類實現 DocumentTransformer 接口。
  2. 重寫 transform 和 transformAll 方法,前者是對 Document 對象進行文檔轉換,后者是對 List進行數據轉換。
  3. 在 transform 和 transformAll 方法中,實現數據清除的具體業務落地。

具體實現代碼

import dev.langchain4j.data.document.Document;
import dev.langchain4j.data.document.DocumentTransformer;

import java.util.ArrayList;
import java.util.List;

/**
 * 自定義文檔轉換器
 */
public class HtmlToTextDocumentTransformer implements DocumentTransformer {
    @Override
    public Document transform(Document document) {
        return Document.from(removeHtmlTags(document.text()));
    }

    // 使用正則表達式清除內容中的 HTML 標簽
    public static String removeHtmlTags(String html) {
        if (html == null || html.isEmpty()) {
            return "";
        }
        // 定義正則表達式,匹配所有HTML標簽
        String regex = "<[^>]+>";
        // 替換所有匹配的標簽為空字符串
        return html.replaceAll(regex, "").trim();
    }

    @Override
    public List<Document> transformAll(List<Document> documents) {
        List<Document> list = new ArrayList<Document>();
        documents.stream().forEach(document -> {
            list.add(this.transform(document));
        });
        return list;
    }
}

調用文檔轉換器

Document htmlDoc = Document.from(
        "<html><body><p>Clean <b>me</b>!</p></body></html>"
);

// 文檔轉換器
DocumentTransformer transformer = new HtmlToTextDocumentTransformer();
Document cleanedDoc = transformer.transform(htmlDoc);

System.out.println(cleanedDoc.text());

最終的執行結果為:

Clean me!

小結

文檔轉換器只是實現生產級別 RAG 的實現步驟之一,生產級別的 RAG 實現的步驟通常包含:文檔加載器、文檔解析器、文檔轉換器、文檔分詞器、文檔向量化、向量持久化、向量檢索等過程,而且每個過程可能都要反復調優,才能實現生產級別的準確性要求,所以道阻且長,吾輩尚需努力啊!

責任編輯:武曉燕 來源: 磊哥和Java
相關推薦

2025-04-22 03:00:00

模型SpringAI

2025-05-06 08:09:50

2025-05-07 02:22:00

2024-05-14 09:57:10

人工智能QuarkusLLM

2023-08-26 19:04:40

配置write轉換器

2025-05-07 01:01:00

JavaQuarkusAI

2025-05-09 10:31:04

2009-09-07 22:00:15

LINQ自定義

2025-05-26 03:15:00

SVMEmbedding數據庫

2025-05-06 08:21:35

2009-09-13 18:58:07

自定義LINQ提供器

2025-05-07 08:14:58

2025-03-31 00:44:00

JavaAI開發

2009-06-30 17:02:31

J2EE實現分頁

2025-03-05 10:49:32

2009-09-03 13:34:03

.NET自定義控件

2023-01-03 07:40:27

自定義滑塊組件

2025-05-08 08:30:00

Redis自定義序列化數據庫

2022-06-20 08:26:39

Spring容器類型轉換

2013-01-10 09:36:19

NagiosNagios插件
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91久久国产综合久久 | 九九在线精品视频 | 久久一区二区三区四区 | 亚洲一区二区三区在线观看免费 | 中文字幕亚洲视频 | 成人午夜激情 | 久久精品亚洲成在人线av网址 | 国产精品久久欧美久久一区 | 久久久久国产一区二区三区 | 美国av毛片 | 成人激情免费视频 | 亚洲三级国产 | 日韩欧美在线一区二区 | 国产精品日韩在线 | 国产成人免费视频网站高清观看视频 | 国产精品一区二区三区四区 | 国产精品无码永久免费888 | 久久久精品一区 | 米奇7777狠狠狠狠视频 | 欧美一区二区久久 | 天堂资源 | 国产精品国产a级 | 欧美视频日韩 | 在线视频一区二区 | xnxx 日本免费 | 日本精品久久 | 国产福利二区 | 国产一级在线 | 一区中文字幕 | 欧美日本在线 | 欧美亚洲视频 | 超碰导航 | 成人小视频在线观看 | 欧美一级淫片免费视频黄 | 欧美精品在线一区二区三区 | 黄色永久免费 | 国产精品电影网 | 一区二区久久精品 | 亚洲 欧美 日韩在线 | 91在线免费观看网站 | 国产成人一区二区三区 |