使用Langflow和AstraDB構建AI助手:從架構設計到與NocoBase的集成

本文由 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 賬戶實現,本文將使用該數據庫作為向量存儲。

架構概覽

Architecture Overview.png

此圖展示了新數據(或更新數據)如何被轉換為 嵌入(embeddings) 并存儲到 向量數據庫 中。

  1. 用戶 → NocoBase 平臺
    用戶與 NocoBase 平臺交互(例如在集合中添加或更新記錄)。
  2. 觸發 CRUD 操作
    NocoBase 中的 CRUD(增刪改查)操作會觸發事件或內部工作流。
  3. 工作流(NocoBase)
    NocoBase 配置了一個響應數據變更的工作流。當檢測到記錄創建或修改時,工作流啟動下一步。
  4. API 流程:加載數據
    NocoBase 工作流調用 LangFlow 的 API 或外部服務,發送待轉換為嵌入的數據。
  5. LangFlow — 數據轉嵌入
    LangFlow 接收數據,并利用語言模型將內容轉換為向量(嵌入)。這些嵌入以數值形式表示文本的語義或上下文,支持語義搜索。
  6. 向量數據庫(AstraDB)
    嵌入隨后存儲到向量數據庫(AstraDB)中,每個嵌入與原始內容(如文檔、記錄、文本)關聯。

diagram.png

此圖還展示了用戶如何通過向量數據庫進行語義查詢并獲取相關結果。

  1. 用戶 → NocoBase 平臺
    用戶再次與 NocoBase 平臺交互,但此次通過嵌入式聊天小部件(或其他搜索界面)。
  2. 嵌入式聊天小部件
    用戶輸入問題或指令。例如:“展示關于應用 X 的信息。” 小部件向 LangFlow 發送請求以處理查詢。
  3. LangFlow — 數據轉嵌入
    LangFlow 將用戶指令轉換為嵌入,以向量格式表示搜索意圖。
  4. 向量數據庫(AstraDB)— 相似性搜索
    使用指令的嵌入在 AstraDB 中搜索最相似的向量(即語義最接近的內容)。
  5. 在模型中精煉搜索結果
    根據 AstraDB 返回的結果,LangFlow 使用 OpenAI 模型(或其他 LLM)精煉搜索結果。
  6. 響應用戶
    最終結果(文本、文檔或生成的回答)返回至 NocoBase 聊天小部件,向用戶展示響應。

使用 NocoBase 的應用

本文將沿用先前創建的應用。該應用旨在展示 NocoBase 的功能,并將在其中實現 AI 助手。下圖展示了助手的工作方式。

目標是通過提問獲取功能相關的洞察。可用功能包括:應用、API 目錄、解決方案設計和故事。

Application Using NocoBase.webp

什么是 LangFlow 和 AstraDB?

LangFlow 是一款由巴西開發者創建的開源工具,提供圖形化界面以構建、可視化和調試涉及語言模型的工作流。基于 LangChain 生態系統,LangFlow 簡化了自然語言處理(NLP)流程和生成式 AI 應用的創建,允許開發者連接不同組件(如 API 調用、文本轉換和業務邏輯),而無需大量編碼。

LangFlow and AstraDB.pngAstraDB 最初是基于 Apache Cassandra 的分布式數據庫服務,后擴展至支持非結構化數據存儲和向量搜索。其向量數據庫功能特別適用于機器學習應用、語義搜索、推薦系統和高維數據處理。

AstraDB.png

安裝 LangFlow

通過 Docker 安裝 LangFlow 只需運行以下命令,然后在 localhost:7860 訪問系統:

docker run -it --rm -p 7860:7860 langflowai/langflow:latest

Installing LangFlow.png

配置 AstraDB

在 AstraDB 注冊賬戶后,可按以下步驟配置數據庫和集合:

  1. 選擇 服務提供商
  2. 選擇 區域
  3. 創建 數據庫

Configuring AstraDB.png

由于集合存儲向量化數據,需配置 Embedding 功能,即負責向量化的 LLM 模型。可選的嵌入模型包括 OpenAI、Nvidia 和 Google 的模型。本文使用 text-embedding-ada-002 進行數據轉換。

Configuring AstraDB.png

向向量數據庫加載數據

此步驟將待搜索數據輸入向量數據庫:

  1. LangFlow 工作流通過 URL 接收數據。
  2. 處理文本。
  3. 使用 text-embedding-ada-002 轉換為向量。
  4. 存儲至 AstraDB 的配置集合中。

Loading Data into the Vector Database.png

關鍵點

  • 需在數據庫連接組件中定義 AstraDB Token。生成 Token 需在 AstraDB 集合頁面點擊 Generate Token

Important Points.png

  • 源文件可在此 倉庫 找到。
  • 使用 OpenAI 模型需為其 API 添加額度,并生成 Token 以配置嵌入生成組件。具體流程參考 此文檔。

通過 Postman 調用 LangFlow 的 API(通過 API > cURL 獲取 URL)即可測試。下圖展示 Postman 請求示例:

Important Points.png

通過模型執行搜索

此步驟負責從向量數據庫檢索數據,并通過 RAG(檢索增強生成) 精煉結果。

Conducting Research Using a Model.png

此階段同樣需在組件中定義 OpenAI 和 AstraDB 的 Token。源文件可在此 倉庫 找到。

測試時可通過 LangFlow 的 Playground 標簽頁使用內置聊天功能。

在 NocoBase 中配置工作流

此步驟將在應用中創建觸發器,以發送需向量化的數據。即每當插入新數據時,數據將被發送至 LangFlow API 處理。

使用 NocoBase 的 工作流 功能實現此目標。工作流詳情參考 此文檔。

Configuring Workflow in NocoBase.png

我們將創建一個工作流,將應用集合的數據發送至向量化集合。

步驟:

  1. 創建新工作流,選擇 集合事件
    Configuring Workflow in NocoBase.png
  2. 觸發器 定義為 應用 集合的插入操作。
    Configuring Workflow in NocoBase.png
  3. 創建 請求節點 以發送應用的向量化數據。本文以 標題描述 為例,實際可根據業務規則發送任意信息。
    Configuring Workflow in NocoBase.png
  4. 通知步驟 為可選,無需執行。

在 NocoBase 中添加聊天小部件

首先,從 LangFlow 的 API 選項中復制聊天小部件代碼,如下圖所示:

Adding the Chat Widget in NocoBase.png

第二步,創建頁面并添加 iframe 組件。組件詳情參考 此文檔。

配置:

  • 模式: HTML
  • HTML: 以下代碼,替換 flow_idhost_url 為 LangFlow 的值。

Adding the Chat Widget in NocoBase.png

測試聊天功能

返回創建的菜單,測試助手并查看響應,示例如下:

Testing the Chat.png

結論

本文演示了如何創建集成 NocoBase、LangFlow 和 AstraDB 的 AI 助手,實現了數據向量化和智能檢索。通過此架構,我們能夠生成基于注冊數據的洞察,并利用 RAG 技術優化搜索結果。

這僅是架構潛力的開端。通過小幅調整,可擴展功能、集成新 AI 模型并提升用戶體驗。🚀

相關閱讀:

  • 如何在 NocoBase 中開發插件發送 WhatsApp 消息?
  • 簡化的架構治理:使用 NocoBase 構建應用程序目錄
  • 如何備份和還原 NocoBase
  • 如何使用 NocoBase 構建應用程序?
  • 如何上傳 Docker 鏡像到內網服務器

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

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

相關文章

6.聊天室環境安裝 - Ubuntu22.04 - elasticsearch(es)的安裝和使用

目錄 介紹安裝安裝kibana安裝ES客戶端使用 介紹 Elasticsearch, 簡稱 ES,它是個開源分布式搜索引擎,它的特點有:分布式,零配置,自動發現,索引自動分片,索引副本機制,res…

SSL VXN

SSL VPN是采用SSL(Security Socket Layer)/TLS(Transport Layer Security)協議來實現遠程接入的一種輕量級VPN技術,其基于B/S架構,免于安裝客戶端,相較與IPSEC有更高的靈活度和管理性,當隧道建立…

【Qt】成員函數指針

一、成員函數指針的本質 與普通函數指針的區別: // 普通函數指針 void (*funcPtr)() &普通函數;// 成員函數指針 void (MyClass::*memberFuncPtr)() &MyClass::成員函數;? 綁定對象:成員函數指針必須與類的實例對象結合使用 ? 隱含 this 指…

通義萬相2.1開源版本地化部署攻略,生成視頻再填利器

2025 年 2 月 25 日晚上 11:00 通義萬相 2.1 開源發布,前兩周太忙沒空搞它,這個周末,也來本地化部署一個,體驗生成效果如何,總的來說,它在國內文生視頻、圖生視頻的行列處于領先位置&#xff0c…

Linux——system V共享內存

共享內存區是最快的IPC(進程內通信)形式,不再通過執行進入內核的系統調用來傳遞彼此的數據 1.共享內存的原理 IPC通信的本質是讓不同的進程先看到同一份資源,然后再進行通信,所以想要通過共享內存進行通信,那么第一步一定是讓兩個…

01 SQl注入基礎步驟(數字、字符、布爾盲注、報錯)

目錄 1、SQL注入漏洞的概要 2、SQL注入的常規思路 3、數字型注入 4、字符型注入 5、布爾盲注 6、報錯注入 1、SQL注入漏洞的概要 原理:通過用戶輸入的數據未嚴格過濾,將惡意SQL語句拼接到原始查詢中,從而操控數據庫執行非預期操作。 …

leetcode-sql數據庫面試題沖刺(高頻SQL五十題)

題目: 620.有趣的電影 表:cinema ------------------------ | Column Name | Type | ------------------------ | id | int | | movie | varchar | | description | varchar | | rating | float | ------------------------ id 是該表的主鍵(具有唯一值…

7.2 奇異值分解的基與矩陣

一、奇異值分解 奇異值分解(SVD)是線性代數的高光時刻。 A A A 是一個 m n m\times n mn 的矩陣,可以是方陣或者長方形矩陣,秩為 r r r。我們要對角化 A A A,但并不是把它化成 X ? 1 A X X^{-1}A X X?1AX 的形…

在本地部署DeepSeek等大模型時,需警惕的潛在安全風險

在本地部署DeepSeek等大模型時,盡管數據存儲在本地環境(而非云端),但仍需警惕以下潛在安全風險: 1. 模型與數據存儲風險 未加密的存儲介質:若訓練數據、模型權重或日志以明文形式存儲,可能被物…

【javaEE】多線程(進階)

1.????前言~🥳🎉🎉🎉 Hello, Hello~ 親愛的朋友們👋👋,這里是E綿綿呀????。 如果你喜歡這篇文章,請別吝嗇你的點贊????和收藏📖📖。如果你對我的…

dify中使用NL2SQL

在 Dify 工作流中融入 NL2SQL(自然語言轉 SQL)之能力,可依循如下步驟達成,借由 Dify 的模塊化設計以及模型編排之功能,優化數據庫查詢之智能化交互: 一、環境準備與 Dify 部署 安裝 Docker 與 Dify 務須確…

使用Everything搜索指定文件夾中的內容

直接路徑搜索法 在 Everything 的搜索框中輸入文件夾路徑加空格,再輸入要搜索的內容或文件名。如要在 D 盤的 “文檔” 文件夾中搜索名為 “報告.docx” 的文件,可輸入 “D:\ 文檔 報告.docx”235。 高級搜索法 打開 Everything 軟件,點擊菜…

Java在小米SU7 Ultra汽車中的技術賦能

目錄 一、智能駕駛“大腦”與實時數據 場景一:海量數據的分布式計算 場景二:實時決策的毫秒級響應 場景三:彈性擴展與容錯機制 技術隱喻: 二、車載信息系統(IVI)的交互 場景一:Android Automo…

Vue開發中計算屬性與方法調用之間的區別與聯系

文章目錄 一 概述二 核心區別三 聯系四 使用原則 一 概述 在 Vue 中,計算屬性(computed) 和 方法(methods) 都可以用于處理數據邏輯,但它們的核心區別在于 緩存機制 和 觸發方式 。 計算屬性示例&#xf…

【Unity】 HTFramework框架(六十一)Project窗口文件夾鎖定器

更新日期:2025年3月7日。 Github源碼:[點我獲取源碼] Gitee源碼:[點我獲取源碼] 索引 Project窗口文件夾鎖定器框架文件夾鎖定自定義文件夾鎖定限制條件 Project窗口文件夾鎖定器 在Project窗口中,文件夾鎖定器能夠為任何文件夾加…

C語言:6.20字符型數據練習題

編寫程序,輸人一行數字字符(用回車結束),每個數字字符 的前后都有空格。 把這一行中的數字轉換成一個整數。 例如,若輸入(<CR>代表 Enter鍵):2 4 8 3<CR>則輸出 整數:2483。 #include <stdio.h>int main() {char ch;int number 0;printf("請輸入一行…

【軟件工程】一篇入門UML建模圖(狀態圖、活動圖、構件圖、部署圖)

&#x1f308; 個人主頁&#xff1a;十二月的貓-CSDN博客 &#x1f525; 系列專欄&#xff1a; &#x1f3c0;軟件開發必練內功_十二月的貓的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻擋不了春天的腳步&#xff0c;十二點的黑夜遮蔽不住黎明的曙光 目錄 1. 前…

【C語言】數組篇

目錄 引言一維數組數組的定義數組的初始化完全初始化部分初始化省略數組長度 數組元素的訪問 多維數組二維數組的定義二維數組的初始化完全初始化部分初始化省略第一維長度 二維數組元素的訪問 遍歷數組元素遍歷一維數組遍歷二維數組 數組作為函數參數一維數組作為函數參數二維…

OpenCV視頻解碼性能優化十連擊(實測幀率提升300%)

解密工業級視頻處理優化方案&#xff01;從硬件加速到多線程榨干CPU/GPU性能&#xff0c;附RTSP流調優參數與內存泄漏排查技巧。 &#x1f527; 優化前準備 環境檢測腳本 import cv2# 驗證硬件加速支持 print("CUDA支持:", cv2.cuda.getCudaEnabledDeviceCount() &…

基于編譯器特性淺析C++程序性能優化

最近在惡補計算機基礎知識&#xff0c;學到CSAPP第五章的內容&#xff0c;在這里總結并且展開一下C程序性能優化相關的內容。 衡量程序性能的方式 一般而言&#xff0c;程序的性能可以用CPE&#xff08;Cycles Per Element&#xff09;來衡量&#xff0c;其指的是處理每個元素…