本文由 Leandro Martins 編寫,最初發布于 Building an AI Assistant with Langflow and AstraDB: From Architecture to Integration with NocoBase。
引言
本文的目標是演示如何創建一個集成了 NocoBase、LangFlow 和 VectorDB 工具的 AI 助手。作為基礎,我將使用自己在 NocoBase 中開發的系統,該系統用于管理架構數據,通過添加一個 AI 助手來生成來自該系統中數據的洞察,例如 應用、API 目錄、解決方案設計和故事。
在本文中,我們將使用以下技術:
- NocoBase、PostgreSQL 和 Docker(本文中將展示如何安裝它們)。
- LangFlow,本地運行,可通過 Docker 安裝(安裝指南在此處)。
- 向量數據庫,通過注冊 AstraDB 賬戶實現,本文將使用該數據庫作為向量存儲。
架構概覽
此圖展示了新數據(或更新數據)如何被轉換為 嵌入(embeddings) 并存儲到 向量數據庫 中。
- 用戶 → NocoBase 平臺
用戶與 NocoBase 平臺交互(例如在集合中添加或更新記錄)。 - 觸發 CRUD 操作
NocoBase 中的 CRUD(增刪改查)操作會觸發事件或內部工作流。 - 工作流(NocoBase)
NocoBase 配置了一個響應數據變更的工作流。當檢測到記錄創建或修改時,工作流啟動下一步。 - API 流程:加載數據
NocoBase 工作流調用 LangFlow 的 API 或外部服務,發送待轉換為嵌入的數據。 - LangFlow — 數據轉嵌入
LangFlow 接收數據,并利用語言模型將內容轉換為向量(嵌入)。這些嵌入以數值形式表示文本的語義或上下文,支持語義搜索。 - 向量數據庫(AstraDB)
嵌入隨后存儲到向量數據庫(AstraDB)中,每個嵌入與原始內容(如文檔、記錄、文本)關聯。
此圖還展示了用戶如何通過向量數據庫進行語義查詢并獲取相關結果。
- 用戶 → NocoBase 平臺
用戶再次與 NocoBase 平臺交互,但此次通過嵌入式聊天小部件(或其他搜索界面)。 - 嵌入式聊天小部件
用戶輸入問題或指令。例如:“展示關于應用 X 的信息。” 小部件向 LangFlow 發送請求以處理查詢。 - LangFlow — 數據轉嵌入
LangFlow 將用戶指令轉換為嵌入,以向量格式表示搜索意圖。 - 向量數據庫(AstraDB)— 相似性搜索
使用指令的嵌入在 AstraDB 中搜索最相似的向量(即語義最接近的內容)。 - 在模型中精煉搜索結果
根據 AstraDB 返回的結果,LangFlow 使用 OpenAI 模型(或其他 LLM)精煉搜索結果。 - 響應用戶
最終結果(文本、文檔或生成的回答)返回至 NocoBase 聊天小部件,向用戶展示響應。
使用 NocoBase 的應用
本文將沿用先前創建的應用。該應用旨在展示 NocoBase 的功能,并將在其中實現 AI 助手。下圖展示了助手的工作方式。
目標是通過提問獲取功能相關的洞察。可用功能包括:應用、API 目錄、解決方案設計和故事。
什么是 LangFlow 和 AstraDB?
LangFlow 是一款由巴西開發者創建的開源工具,提供圖形化界面以構建、可視化和調試涉及語言模型的工作流。基于 LangChain 生態系統,LangFlow 簡化了自然語言處理(NLP)流程和生成式 AI 應用的創建,允許開發者連接不同組件(如 API 調用、文本轉換和業務邏輯),而無需大量編碼。
AstraDB 最初是基于 Apache Cassandra 的分布式數據庫服務,后擴展至支持非結構化數據存儲和向量搜索。其向量數據庫功能特別適用于機器學習應用、語義搜索、推薦系統和高維數據處理。
安裝 LangFlow
通過 Docker 安裝 LangFlow 只需運行以下命令,然后在 localhost:7860 訪問系統:
docker run -it --rm -p 7860:7860 langflowai/langflow:latest
配置 AstraDB
在 AstraDB 注冊賬戶后,可按以下步驟配置數據庫和集合:
- 選擇 服務提供商
- 選擇 區域
- 創建 數據庫
由于集合存儲向量化數據,需配置 Embedding 功能,即負責向量化的 LLM 模型。可選的嵌入模型包括 OpenAI、Nvidia 和 Google 的模型。本文使用 text-embedding-ada-002 進行數據轉換。
向向量數據庫加載數據
此步驟將待搜索數據輸入向量數據庫:
- LangFlow 工作流通過 URL 接收數據。
- 處理文本。
- 使用 text-embedding-ada-002 轉換為向量。
- 存儲至 AstraDB 的配置集合中。
關鍵點
- 需在數據庫連接組件中定義 AstraDB Token。生成 Token 需在 AstraDB 集合頁面點擊 Generate Token。
- 源文件可在此 倉庫 找到。
- 使用 OpenAI 模型需為其 API 添加額度,并生成 Token 以配置嵌入生成組件。具體流程參考 此文檔。
通過 Postman 調用 LangFlow 的 API(通過 API > cURL 獲取 URL)即可測試。下圖展示 Postman 請求示例:
通過模型執行搜索
此步驟負責從向量數據庫檢索數據,并通過 RAG(檢索增強生成) 精煉結果。
此階段同樣需在組件中定義 OpenAI 和 AstraDB 的 Token。源文件可在此 倉庫 找到。
測試時可通過 LangFlow 的 Playground 標簽頁使用內置聊天功能。
在 NocoBase 中配置工作流
此步驟將在應用中創建觸發器,以發送需向量化的數據。即每當插入新數據時,數據將被發送至 LangFlow API 處理。
使用 NocoBase 的 工作流 功能實現此目標。工作流詳情參考 此文檔。
我們將創建一個工作流,將應用集合的數據發送至向量化集合。
步驟:
- 創建新工作流,選擇 集合事件。
- 將 觸發器 定義為 應用 集合的插入操作。
- 創建 請求節點 以發送應用的向量化數據。本文以 標題 和 描述 為例,實際可根據業務規則發送任意信息。
- 通知步驟 為可選,無需執行。
在 NocoBase 中添加聊天小部件
首先,從 LangFlow 的 API 選項中復制聊天小部件代碼,如下圖所示:
第二步,創建頁面并添加 iframe 組件。組件詳情參考 此文檔。
配置:
- 模式: HTML
- HTML: 以下代碼,替換 flow_id 和 host_url 為 LangFlow 的值。
測試聊天功能
返回創建的菜單,測試助手并查看響應,示例如下:
結論
本文演示了如何創建集成 NocoBase、LangFlow 和 AstraDB 的 AI 助手,實現了數據向量化和智能檢索。通過此架構,我們能夠生成基于注冊數據的洞察,并利用 RAG 技術優化搜索結果。
這僅是架構潛力的開端。通過小幅調整,可擴展功能、集成新 AI 模型并提升用戶體驗。🚀
相關閱讀:
- 如何在 NocoBase 中開發插件發送 WhatsApp 消息?
- 簡化的架構治理:使用 NocoBase 構建應用程序目錄
- 如何備份和還原 NocoBase
- 如何使用 NocoBase 構建應用程序?
- 如何上傳 Docker 鏡像到內網服務器