作者 | 郭煒
編輯 | Debra Chen
在當今的商業環境中,大數據的管理和應用已經成爲企業決策和運營的核心組成部分。然而,隨着數據量的爆炸性增長,如何有效利用這些數據成爲了一個普遍的挑戰。
本文將探討大數據架構、大模型的集成,以及如何將大模型集成到公司大數據架構中,並使用Apache SeaTunnel和WhaleStudio將公司內部數據進行“百科全書化”,利用大數據和大模型來提升企業運營效率。
大模型在整體公司大數據架構中的位置
當今,無論大企業還是小公司,其實都會遇到同樣的問題:公司裏沉澱的數據量巨大,但到底該怎麼使用?
大模型的橫空出世讓數據利用有了全新的使用途徑,問題是如何大量獲得公司的數據,變成“你”的大模型?
以及如何將大模型灌入公司內部數據,並“百科全書”化?
大數據與大模型架構概覽
爲了更好地回答這些問題,我們首先需要弄清楚大模型在企業複雜的數據結構中處於什麼位置。目前,全球流行的大數據結構圖如下所示:
企業在處理大數據時,通常會將數據分爲實時數據和批量數據兩大類。實時數據可以來自車聯網、數據庫日誌、點擊流等多種來源,而批量數據則可能包括文件、報表、CSV文件等。這些數據可以通過各種工具和技術,如Apache Kafka、Amazon Kinesis等進行處理,最終被整合到企業的大數據分析系統中。
大模型在大數據架構中扮演着至關重要的角色。它們能夠處理和分析大量數據,爲企業提供深入的洞察和預測。大模型可以通過兩種主要方法進行集成:
- 基於開源模型的優化:企業可以使用開源的大模型,並根據自己的數據進行優化,以提高模型的性能。這種方法雖然複雜,對於普通用戶來做操作比較困難,但可以訓練出高度定製化的模型,具體訓練方法可以參考《用一杯星巴克的錢,訓練自己私有化的ChatGPT》
- 數據向量化:另一種方法是將數據向量化,即將數據轉換爲大模型易於處理和查詢的格式,然後快速地將其放入企業自己的向量數據庫中。
這就是大模型在大數據架構中所處的位置和作用,大模型作爲大數據架構的核心技術組件,在數據轉換、預測分析和智能應用等方面發揮着不可替代的作用,是實現大數據價值的關鍵所在。
數據高速公路:Apache SeaTunnel& WhaleStudio
數據同步是大數據架構中的另一個關鍵環節。使用如Apache NiFi、Apache Spark、Sqoop等工具,可以實現數據在不同系統和數據庫之間的實時和批量同步。這些工具支持跨雲和混合雲環境,能夠處理來自各種數據源的數據,並將其同步到目標數據庫或數據倉庫中。但是因爲依賴開源,它們的數據源支持力度非常有限。
Apache SeaTunnel:新一代實時多源數據同步工具,大數據的高速公路
有一個非常形象的比喻可以簡單明瞭地概括Apache SeaTunnel的作用——大數據的高速公路。它可以把各種各樣的數據源,如MySQL、RedShift、Kafka等數據,實時和批量數據同步至目標數據庫。區別於Apache NiFi、Apache Spark,新一代實時多源數據同步工具Apache SeaTunnel目前已經可以支持上百種源數據庫/目的地的數據同步與集成,並支持以跨雲和混合雲的方式同步數據,便於不同的用戶進一步進行大數據和大模型訓練。
Apache SeaTunnel 典型案例
目前,Apache SeaTunnel在全球已經有大量用戶,其中一個典型用戶是JP Morgan(摩根大通銀行)。
摩根大通銀行是一家全球知名的擁有超過 200,000 名員工的金融巨頭,其中包括 30,000 多名數據專業人員(工程師、分析師、科學家和顧問),正在與複雜的遺留系統和新興的數據環境作鬥爭。該機構在 10 多個不同的數據平臺組成的迷宮中運營,需要一種強大、安全且高效的數據集成方法。
對摩根大通銀行來說,最重要的挑戰是通過複雜的隱私和訪問控制對數據進行攝取和處理,這雖然對於數據保護至關重要,但通常會延遲數據集成過程。再加上該公司向AWS的過渡階段(兩年後仍在進行中),以及對Snowflake等現代數據庫解決方案的實驗,對靈活的數據集成解決方案的需求很迫切。
在追求敏捷性的過程中,摩根大通銀行對比了若干流行的數據同步產品,比如Fivetran、Airbyte,但最終選擇了支持Spark集羣來實現最佳性能的替代方案——Apache SeaTunnel。
原因就在於SeaTunnel與其現有的Spark基礎設施兼容,一個關鍵優勢是Apache SeaTunnel與Java代碼庫的無縫集成,允許從摩根大通銀行的主要編碼環境直接觸發數據遷移作業。摩根大通銀行利用SeaTunnel從 Oracle、DB2、PostgreSQL、DynamoDB和 SFTP文件等源獲取數據,在Spark集羣上處理數據,並最終將其加載到S3(摩根大通銀行的集中式數據存儲庫)中,隨後集成到Snowflake和Amazon Athena進行高級分析。
Apache SeaTunnel的一個突出功能是能夠顯式地處理數據類型轉換,確保不同系統之間的數據完整性,這是摩根大通銀行銀行多元化數據生態系統的重要組成部分。
爲什麼我們需要Apache SeaTunnel?
既然已經有Flink、Spark等各種流行的數據處理工具存在,爲什麼我們需要Apache SeaTunnel呢?和摩根大通銀行一樣,深入瞭解這個工具,你會發現這個問題並不難回答。
- Apache SeaTunnel支持開發版,目前支持130+ Connectors,商業版產品更是(WhaleTunnel)支持150+種數據庫,這是其他產品所無法比擬的;
- SeaTunnel性能優勢:比Airbyte快30倍,比DataX快30%;(性能報告可參考《最新性能對比報告:SeaTunnel 是 Airbyte 30 倍!》
- 易於部署:可以在3分鐘內部署Apache SeaTunnel,支持在Spark/Flink/Zeta上運行。
使用方式簡單
在使用方式上,Apache SeaTunnel也秉持着爲廣泛大數據從業者服務爲宗旨,使用方式以簡單易用爲主要設計目標。
- 可以使用SQL-like代碼創建同步作業。
- 支持Source Connector、Sink Connector和Transform操作。
想要更簡單的方式?AWS Market Place上的WhaleStudio
如果創建代碼來進行數據集成對我們來說有挑戰,還有更加簡單易用的方式可以選擇。白鯨開源基於Apache DolphinScheduler和Apache SeaTunnel打造的商業產品WhaleStudio ,是分佈式、雲原生並帶有強大可視化界面的DataOps系統,增加了商業客戶所需的企業級特性,零基礎用戶也可以簡單上手:
- 所見即所得的數據Mapping和處理
- 全可視化操作的調度和數據處理,無需代碼處理
- 全面兼容AWS及多雲、混合雲架構
- 多團隊協作和開發
- 性能卓越、超過150種數據源的連接,包括
- AWS S3, Aurora, Redshift
- SAP
- Oracle, MySQL
- Hudi, Iceberg
簡單來說,WhaleStudio的使用流程和大模型集成可以簡單概括爲以下幾點:
- 數據源連接:首先,需要在WhaleStudio中配置數據源。這包括CSV文件、數據庫、雲存儲服務等。用戶可以通過拖放的方式將數據源組件添加到工作流中,並設置連接參數。
- 數據轉換:數據在傳輸過程中可能需要進行清洗和轉換以適應目標系統。WhaleStudio提供了多種數據轉換工具,包括數據過濾、字段映射、數據合併等。
- 數據加載:轉換後的數據需要加載到目標數據庫或數據倉庫中。WhaleStudio支持多種目標系統,包括關係型數據庫、NoSQL數據庫和雲數據服務。
- API集成:爲了使數據能夠被大模型理解,需要通過API將數據轉換爲特定的格式。WhaleStudio可以調用外部API,並將轉換後的數據輸出到大模型中。
- 流程監控:用戶可以實時監控數據流的狀態,查看數據同步的進度和任何可能出現的錯誤。
- 數據同步與更新
- 定時任務:WhaleStudio支持定時任務,允許用戶設置在特定時間自動運行數據流,以確保數據的實時更新。
- 數據版本控制:通過版本控制,用戶可以追蹤數據流的變更歷史,並在必要時回滾到之前的版本。
如何將大模型灌入公司內部數據,並“百科全書”化
如上文所述數據的“高速公路”有了,那麼如何通過“高速公路”將數據放到大模型中並利用呢?
上圖以一個示例展示了大模型如何將公司內部數據“百科全書”化的概略圖,將MySQL數據庫中的所有關於圖書的文章,通過圖形化的方式輸入大模型中,即以向量的方式讓大模型理解,並最終將輸入的數據以語言的方式進行問答。下面以實戰案例詳細解說此流程。
實戰案例:在AWS上利用WhaleStudio+大模型將圖書館檢索從書名檢索到語義檢索
現有的圖書搜索解決方案(例如公共圖書館使用的解決方案)十分依賴於關鍵詞匹配,而不是對書名實際內容的語義理解。因此會導致搜索結果並不能很好地滿足我們的需求,甚至與我們期待的結果大相徑庭。這是因爲僅僅依靠關鍵詞匹配是不夠的,因爲它無法實現語義理解,也就無法理解搜索者真正的意圖。
有更好的方法可以讓我們更加準確、高效地進行圖書搜索。通過使用特定的API,可以將圖書數據轉換爲大模型能夠理解的格式,從而實現語義級別的搜索和問答功能。這種方法不僅提高了搜索的準確性,還爲企業提供了一種新的數據利用方式。
WhaleStudio是一個強大的數據集成和處理平臺,它允許用戶通過圖形化界面來設計和實施數據流。WhaleStudio被用於將圖書館的圖書數據集成到大模型中,以便進行更深層次的語義搜索和問答。
下面我們來演示一下如何使用WhaleStudio、Milvus和OpenAI進行相似度搜索,實現對整個書名的語義理解,從而讓搜索結果更加精準。
準備工作
-
在實驗之前,我們需要去官網獲取一個OpenAI的token,
-
在AWS MarketPlace部署 WhaleStudio
-
然後部署一個Milvus的實驗環境(https://milvus.io/docs/install_standalone-docker.md)。
-
我們還需要準備好將用於這個例子的數據,可以從這裏下載,把它放到/tmp/milvus_test/book下(https://www.kaggle.com/datasets/jealousleopard/goodreadsbooks)
-
配置WhaleStudio任務
建立項目→新建工作流定義→建立SeaTunel任務→copy腳本到任務裏
- 腳本代碼
env {
# You can set engine configuration here
execution.parallelism = 1
job.mode = "BATCH"
checkpoint.interval = 5000
#execution.checkpoint.data-uri = "hdfs://localhost:9000/checkpoint"
}
source {
# This is a example source plugin **only for test and demonstrate the feature source plugin**
LocalFile {
schema {
fields {
bookID = string
title_1 = string
title_2 = string
}
}
path = "/tmp/milvus_test/book"
file_format_type = "csv"
}
}
transform {
}
sink {
Milvus {
milvus_host = localhost
milvus_port = 19530
username = root
password = Milvus
collection_name = title_db
openai_engine = text-embedding-ada-002
openai_api_key = sk-xxxx
embeddings_fields = title_2
}
}
- 點擊運行
- 簡單數據預處理也可以利用可視化界面
- 查詢數據庫,確認已經有數據
- 使用如下代碼通過語義搜索書名
import json
import random
import openai
import time
from pymilvus import connections, FieldSchema, CollectionSchema, DataType, Collection, utility
COLLECTION_NAME = 'title_db' # Collection name
DIMENSION = 1536 # Embeddings size
COUNT = 100 # How many titles to embed and insert.
MILVUS_HOST = 'localhost' # Milvus server URI
MILVUS_PORT = '19530'
OPENAI_ENGINE = 'text-embedding-ada-002' # Which engine to use
openai.api_key = 'sk-******' # Use your own Open AI API Key here
connections.connect(host=MILVUS_HOST, port=MILVUS_PORT)
collection = Collection(name=COLLECTION_NAME)
collection.load()
def embed(text):
return openai.Embedding.create(
input=text,
engine=OPENAI_ENGINE)["data"][0]["embedding"]
def search(text):
# Search parameters for the index
search_params={
"metric_type": "L2"
}
results=collection.search(
data=[embed(text)], # Embeded search value
anns_field="title_2", # Search across embeddings
param=search_params,
limit=5, # Limit to five results per search
output_fields=['title_1'] # Include title field in result
)
ret=[]
for hit in results[0]:
row=[]
row.extend([hit.id, hit.score, hit.entity.get('title_1')]) # Get the id, distance, and title for the results
ret.append(row)
return ret
search_terms=['self-improvement', 'landscape']
for x in search_terms:
print('Search term:', x)
for result in search(x):
print(result)
print()
- 運行結果
結果: 如果我們按照之前的老方法關鍵詞搜索,書名中必須包含自我提升、提升等關鍵詞;但是提供大模型進行語義級別的理解,則可以檢索到更加符合我們需求的書名。比如在上面的例子中,我們搜索的關鍵詞爲self-improvement(自我提升),展示的書名《關係之舞:既親密又獨立的相處藝術》、《尼各馬可倫理學》等雖然不包含相關關鍵詞,卻很明顯更加符合我們的要求。
結語
大數據和大模型爲企業提供了前所未有的數據處理能力和洞察力。通過有效的數據架構設計、大模型集成、實時與批量數據處理以及數據同步,企業可以更好地利用其數據資源,提升運營效率,並在競爭激烈的市場中保持領先。
Apache SeaTunnel和WhaleStudio作爲企業數據高速公路,幫助快速對接企業內部數據,實現數據的向量化和“百科全書化”。其中,WhaleStudio作爲一個數據集成工具,爲企業提供了一個簡單、高效且功能強大的解決方案,讓企業可以輕鬆地將數據同步到大模型中,實現更深層次的數據分析和應用,從而提升企業的數據處理能力和業務洞察力。
本文由 白鯨開源科技 提供發佈支持!