MCP 是什麼MCP 全稱是 Model Context Protocol(模型上下文協議),它是一個專門設計用來讓大語言模型(如 Claude)能夠與外部工具和數據源進行交互的協議。MCP 能做什麼?通過 MCP,你可以:構建服務器:創建能爲 AI 模型提供各種工具和數據的服務器 連接客戶端:將這些服務器連接到支持 MCP 的客戶端應用 擴展 AI 能力:通過自定義功能增強 AI 模 ⌘ Read more
MCP 是什麼MCP 全稱是 Model Context Protocol(模型上下文協議),它是一個專門設計用來讓大語言模型(如 Claude)能夠與外部工具和數據源進行交互的協議。MCP 能做什麼?通過 MCP,你可以:構建服務器:創建能爲 AI 模型提供各種工具和數據的服務器 連接客戶端:將這些服務器連接到支持 MCP 的客戶端應用 擴展 AI 能力:通過自定義功能增強 AI 模 ⌘ Read more
MLNLP 社區是國內外知名的機器學習與自然語言處理社區,受衆覆蓋國內外 NLP 碩博生、高校老師以及企業研究人員。 社區的願景是促進國內外自然語言處理,機器學習學術界、產業界和廣大愛好者之間的交流和進步,特別是初學者同學們的進步。來源 \| 機器之心編輯 \| 張倩、澤南給到額外的計算資源和「思考」時間,爲什麼有的模型能好好利用,把性能提升一大截,而有的模型就不行?當遇到困難問題時,人類會花時間深 ⌘ Read more
在 Go 語言的生態中,數據結構的選擇和實現往往直接影響程序的性能和代碼的可維護性。今天,我們就來聊聊一個備受開發者喜愛的開源項目 gods,它爲我們提供了豐富且易用的數據結構實現,極大地簡化了開發過程中 “造輪子” 的煩惱。項目背景-------gods 是由 Emir Pasic 開發並維護的一個開源庫,旨在爲 Go 語言提供各種常用數據結構和算法的實現。項目採用 MIT 許可證,鼓勵社區貢獻 ⌘ Read more
在 Golang 開發中,如何快速獲取 IP 地址的地理位置?無論是安全審計、日誌分析,訪問控制,還是資產測繪,網絡空間搜索等等都可能需要 IP 定位。本篇文章將介紹常見幾種 Golang IP 定位方案,幫助你選擇最合適的方法。IP 全球定位系統IP 定位系統是利用多種數據庫,如全球城市數據庫、多語言支持庫、IP 地址數據庫以及地圖服務等資源來精準確定用戶位置。藉助於 IP 地理定位 API,我 ⌘ Read more
安裝 python 環境我這裏是以前安裝好的版本:python 3.11.5,這裏不再介紹,有需要的可以在網上找教程。安裝 Anaconda我這裏是以前安裝好的版本:conda 23.7.4,這裏也不再介紹,有需要的可以在網上找教程。安裝 OmniParsergit clone https://github.com/microsoft/OmniParser.gitcd OmniParser創建專屬 ⌘ Read more
在當今數字化的時代,信息和知識如同浩瀚的海洋,而我們每個人都要在其中尋找屬於自己的寶藏。想象一下,作爲一名醫生,你手中握有海量的科研資料,它們如同一座座知識的孤島,等待着被探索和整合。如果能夠擁有一位專屬的 “知識機器人”,它不僅能夠學習並吸收你所有的資料,還能在你需要時,迅速爲你提供精準的答案,這將是多麼令人嚮往的事情啊!你無需再耗費大量時間在繁瑣的資料檢索中,只需簡單地向它提問,答案便如自來水 ⌘ Read more
本文將毫無保留地給你把 MCP(Model Context Protocol)的三大核心概念——Resources、Tools 和 Prompts——掰開揉碎講清楚。MCP 是 2024 年底由 Anthropic 搞出來的一個開放協議,目的是讓大語言模型(LLM)能更順暢地跟外部數據和工具對接。以下是我的解讀:1. Resources(資源)本質:Resources 是 MCP 裏用來暴露數據的 ⌘ Read more
OmniParser V2:重新定義 AI 與用戶界面的交互方式隨着人工智能技術的飛速發展,AI 已經逐漸滲透到我們生活的方方面面。Microsoft 推出的 OmniParser V2,通過將視覺語言模型(LLM)與用戶界面(UI)相結合,正在重新定義人機交互的方式。本文將帶您全面瞭解這款創新工具的特點、應用場景及其與其他解析器的對比。 什麼是 OmniParser V2?----------- ⌘ Read more
目前,市面上有各種不同的大模型部署工具,比如 ollama、vllm、sglang 等,但是很多人還並不瞭解大模型文件格式之間的區別,本次我們來聊一下 ollama 專用的 GGUF 格式。1、什麼是 GGUFGGUF 格式的全名爲(GPT-Generated Unified Format),由 llama.cpp 創始人 Georgi Gerganov 設計的二進制文件格式,專爲高效存儲和加載大 ⌘ Read more
如今是 AI 的時代,如果能夠通過大模型自動操作瀏覽器,無論是網頁抓取、自動化測試還是數據收集都能大大提高效率。因爲你無須編寫和維護複雜的 xpath、正則、css 選擇器腳本。今天,喵將介紹一個非常有趣的工具——browser-use\[1\],並結合 DeepSeek 模型,展示通過 AI Agent 自動化操作瀏覽器。開始使用----1. 安裝依賴首先,你需要確保有一個基礎的 Python 環境 ⌘ Read more
在 Go 語言的世界裏,靜態編譯是其一大特色,能夠保證性能和安全性。然而,有些場景下,我們希望像 Python 或 JavaScript 一樣,支持運行時動態執行代碼,比如插件化架構、規則引擎、腳本解釋器等。今天,我們來介紹一個強大的 Go 解釋器庫——yaegi,它能讓 Go 代碼在運行時執行動態腳本。yaegi 簡介yaegi 是一個用 Go 語言編寫的 Go 解釋器。它可以在運行時解析和執行 ⌘ Read more
在使用 LangchainGo(簡稱 langchaingo)構建智能應用時,提示詞工程(Prompt Engineering) 是一個關鍵環節。它可以幫助我們更精準地引導 LLM(大語言模型)生成符合預期的內容。本文將介紹在 langchaingo 中如何使用提示詞工程。什麼是提示詞工程?提示詞工程是人與機器進行溝通的橋樑,更是用戶引導 AI 精準執行任務的關鍵。提示詞基礎策略明確目標: 用戶需 ⌘ Read more
每天面對大量的電子文檔,總是感到頭疼不已。掃描件、賬單、合同、發票,各種文件堆積如山,即使分門別類地存放,查找時仍然耗時費力。現有的文檔管理工具雖然能夠存儲這些文件,但往往缺乏智能分類功能,需要手動添加標籤、設置文檔類型和對應方信息,這一過程不僅繁瑣,還容易出錯或遺漏重要信息。最近發現了一款名爲 Paperless-AI 的開源工具,它完美解決了上述問題。這個工具能夠與 Paperless-ngx ⌘ Read more
想象一下有很多的算法服務實例,負載不均衡會造成:有的節點計算壓力很重,用戶延遲變長 有的節點在閒置,資源浪費 需要將請求分發到不同的節點進行處理,讓每個節點的負載在合適的水平,這就是負載均衡。簡介nginx 是一款開源的、高性能的 Web 服務器,同時也廣泛用作 反向代理服務器、負載均衡器 和 HTTP 緩存。 它的設計目標是解決傳統服務器(如 Apache)在高併發場景下的性能瓶頸, ⌘ Read more
背景 Go 語言中的 context(上下文) 對於 Go 程序員來說應該是司空見慣, 很多都會不假思索的將 context 類型入參作爲函數的第一個參數. 最近因爲在生產環境處理過一個和 context 有關的問題, 因此希望可以藉助這個實際問題說說 context 使用上的注意事項. 類似 “context 應該使用參數傳遞不能作爲 struct 成員” 的八股知識不在本文討論範 ⌘ Read more
在科技浪潮洶湧澎湃的今天,人工智能與軟件開發工具不斷迭代升級,深度融合前沿技術來滿足個性化知識管理與開發需求,已然成爲技術愛好者和開發者們競相探索的方向。本文將利用 Ollama、Deepseek-R1、AnythingLLM 搭建強大的本地個人知識庫,並詳細介紹 Continue 在 VScode 中的本地集成,帶你解鎖全新的技術應用體驗,開啓高效知識管理與開發的新徵程。一、Ollama+Dee ⌘ Read more
MCP Client 是個跟 MCP(Model Context Protocol)配套的概念,簡單來說,它是 MCP 生態裏的 “客戶端” 部分,負責跟 MCP 服務器交互。MCP Client 是什麼?---------------MCP Client 是一個工具或者代碼庫,作用是讓大語言模型(LLM)能方便地調用 MCP 服務器提供的功能。 MCP 服務器是跑在本地或雲端的獨立程序,暴露 ⌘ Read more
go-flags 是一個用於處理命令行參數和標誌的 Go 庫,它提供了一種簡潔而靈活的方式來定義和解析命令行標誌(flags)和參數。這個庫對於需要處理命令行輸入的 Go 應用程序非常有用,特別是在構建 CLI(命令行工具)時。1. 安裝 go-flags首先,你需要安裝 go-flags 庫。在命令行中運行以下命令:go get github.com/jessevdk/go-flags這個命令會 ⌘ Read more
在分佈式系統中,協調多個服務實例之間的共享資源訪問是一個經典的挑戰。傳統的單機鎖(如 sync.Mutex)無法實現跨進程工作,此時就需要用到分佈式鎖了。本文將介紹 Go 語言生態中基於 Redis 實現的分佈式鎖庫 redsync,並探討其使用方法和實現原理。分佈式鎖首先我們來探討下爲什麼需要分佈式鎖?當我們編寫的程序出現資源競爭的時候,就需要使用互斥鎖來保證併發安全。而我們的服務很有可能不會單 ⌘ Read more
Milvus 是一個開源的、高性能、高擴展性的向量數據庫,專門用於處理和檢索高維向量數據。它適用於相似性搜索(Approximate Nearest Neighbor Search,ANN),特別適合 AI、推薦系統、計算機視覺、自然語言處理(NLP)等領域。Milvus 由 Zilliz 開發,並已捐贈給 LF AI & Data 基金會。向量是神經網絡模型的輸出數據格式,可以有效地對信息進行編 ⌘ Read more
一、場景1.1 場景描述在日常的開發工作中,我們頻繁遭遇諸如外賣訂單超過 30 分鐘未支付則自動取消,或用戶註冊成功後 15 分鐘發送短信通知等業務場景。這些,正是延時任務處理的典型應用。在電商、支付等系統中,常見的做法是首先創建訂單(或支付單),然後給予用戶一定的支付期限。若用戶未能在規定時間內完成支付,系統則需自動取消先前的訂單(或支付單)。類似場景不勝枚舉,如到期自動確認收貨、超時自動發起退 ⌘ Read more
作爲一名互聯網技術愛好者,我一直對大型語言模型和高效推理技術充滿熱情。本文基於基於 Qwen2.5 實現 DeepSeek 推理功能。本文使用 unsloth 框架,這個輕量高效、易於上手的工具,加上 SFT 中文數據集的加持,測試了在醫療領域的推理應用。當然,過程中還遇到了諸如 GRPO 等新概念的挑戰與啓示,這一切都讓我對整個系統有了更深的認識。接下來,我就以親歷者的角度,帶大家走進這個既枯燥 ⌘ Read more
在本篇文章中,我們將使用 LangChainGo + Gin 框架,結合 Ollama 大語言模型,實現一個流式 AI 問答系統。最終,我們還會使用 curl 進行測試,由於是實戰例子所以我會提供一個簡單的 html+css+js 的前端來實時顯示 AI 的回答。流式響應的意義在傳統 API 調用中,我們往往要等到大語言模型(LLM) 計算完成後,才能返回完整的回答。這會導致:等待時間長:用戶需要 ⌘ Read more
Go 1.24 通過 runtime.AddCleanup 引入了一個新的、改進的 Finalizer 機制。這個函數是對 runtime.SetFinalizer 的重大改進,提供了更多的靈活性、更好的效率和改進的安全性。Finalizer 在 Go 中扮演着關鍵角色,當對象不再可達時運行清理函數。這允許開發者自動執行諸如關閉文件、釋放內存和註銷資源等重要任務。今天我們將探討 runtime.A ⌘ Read more
今天,我們精挑細選 6 款最具代表性的 RAG 知識庫文檔處理工具,從技術架構、功能特性、適用場景、優劣勢等多個維度對比,幫你找到最適合的解決方案!💡🔥Marker------ 項目地址:https://github.com/VikParuchuri/marker總結:Marker 是一款輕量級、開源的 PDF 轉 Markdown 工具,具備 OCR 識別能力,特別適用於基礎文獻處理任務。其速 ⌘ Read more
在分佈式系統中,唯一 ID(GUID)是必不可少的,常見的方案包括 UUID、MongoDB ObjectID 和 Twitter Snowflake。其中 UUID 雖然通用,但長度較長,而 Snowflake 需要額外的機器 / 數據中心配置。xid (github.com/rs/xid) 是一個基於 MongoDB ObjectID 算法的更輕量級、更高效的全局唯一 ID 生成庫,用於生成 ⌘ Read more
概述orcaman/concurrent-map/v2 是一個 Go 語言的高性能併發安全哈希表實現。它通過分片鎖(shard locking)策略減少鎖競爭,適用於高併發讀寫場景。與標準庫的 sync.Map 不同,該庫針對通用鍵值類型優化,提供更靈活的 API 和更高性能。項目地址GitHub 倉庫 : https://github.com/orcaman/concurrent- ⌘ Read more
我正在幫助某人設置我的 gokrazy/rsync 實現來同步 RPKI 數據(用於保護 BGP 路由基礎設施),當時我們發現,在特定調用方式下,我的 rsync 接收器會無限期掛起。這個問題很快就解決了,但在這個過程中,我意識到我應該記錄下這些年來我所欣賞的一些 Go 調試技巧!場景:Go 程序掛起----------如果你想跟着實驗,可以構建 gokrazy/rsync 的一個較舊版本,就在修 ⌘ Read more
一、背景介紹------火熱的大模型,每次更新都有驚喜,也逐漸應用於實際業務中,AIGC(AI Generated Content)的架構逐漸成爲支撐多行業智能化轉型的核心基礎設施。該架構通過整合數據採集、模型訓練、推理服務等關鍵模塊,結合雲原生技術棧,爲金融、醫療、法律、自動駕駛等領域提供定製化的 AI 能力輸出。其分層設計和模塊化特性,體現了從底層資源到上層應用的端到端智能化閉環。二、架構描述 ⌘ Read more
大語言模型(LLM)是基於自監督學習預訓練的深度學習模型,訓練數據量龐大、訓練時間長,並且包含大量的參數。LLM 在過去兩年中徹底改變了自然語言處理領域,展現了在理解和生成類人文本方面的卓越能力。然而,這些通用模型的開箱即用性能並不總能滿足特定的業務需求或領域要求。LLM 單獨使用時無法回答依賴於公司專有數據或封閉環境的問題,這使得它們在應用中顯得相對通用。由於從零開始訓練一個 LLM 模型需要大 ⌘ Read more
Ebitengine 是一款基於 Go 語言的 2D 遊戲開發引擎,提供了簡單易用的 API 和跨平臺的支持,開發者可以通過它輕鬆構建遊戲項目。核心特性-------跨平臺支持 Ebitengine 支持多個平臺,包括 Windows、macOS、Linux,以及 WebAssembly(可運行於瀏覽器中)。這使得開發者可以在不同設備上運行同一個遊戲項目,而無需編寫額外的代碼。易用的 API ⌘ Read more
今天我們來聊聊一個在 Go 面試中經常遇到的經典問題:Goroutine 什麼時候會被掛起?如果你是一個 Go 程序員,或者正在準備 Go 相關的面試,可能對這個問題有一些疑問。那麼,就讓我從一個資深程序員的角度,帶你們深入淺出地分析這個問題。💡什麼是 Goroutine?首先,咱們得搞清楚什麼是 Goroutine。簡而言之,Goroutine 就是 Go 中的輕量級線程。它讓我們可以用極低的成 ⌘ Read more
引言-----大型語言模型(LLM)已成爲驅動智能客服、內容創作、代碼生成等領域變革的核心力量。推理框架作爲 LLM 高效部署的關鍵組件,直接關係到應用的性能、成本和開發效率。爲幫助讀者在繁多的框架中做出明智選擇,本文將深入分析主流推理框架(如 XInference、LiteLLM、LMDeploy、SGLang、vLLM 等)的功能特性、性能表現、易用性及適用場景。結合 DeepSeek AI ⌘ Read more
一、爲什麼選擇 gocsv?Go 標準庫 encoding/csv 提供了基礎的 CSV 讀寫能力,但在處理複雜業務時常常需要:手動轉換字符串到具體類型 維護列索引與結構字段的映射關係 處理嵌套結構等複雜數據類型 處理可選字段和默認值 gocarina/gocsv 通過結構體標籤實現了聲明式的 CSV 解析,極大簡化了開發流程。最新統計顯示,該庫在 GitHub 已獲得 1 ⌘ Read more
寫在前面最近有個同學後臺私信讓我出一個 DNS 的工作原理,面試的時候居然問到了,所以就簡單聊聊 DNS 的工作原理和發展歷史吧!DNS 的核心作用DNS(域名系統,Domain Name System)是互聯網中用於將人類可讀的域名轉換爲機器可識別的 IP 地址的核心服務。域名與 IP 的映射:DNS 本質上是一個分佈式數據庫,存儲了域名與對應 IP 地址的映射關係。DNS 的組成部分域名空間( ⌘ Read more
需求如標題,我需將圖片中的文字提取出來。下載鏈接在最後,需要的自行下載。微信手機 APP 就有從圖片提取文字的功能,但是需要每個圖片單獨操作,麻煩。於是密塔搜索:最先吸引到我的其實是 Python 腳本,正好可以練習一下 AI 編程, 程序是寫好了, 但是, 識別的一塌糊塗, 所以放棄了。優化的事情以後再說。試用了 UniOCR 還不錯,推薦給大家。下載軟件Github 鏈接: https://g ⌘ Read more
有些 Golang 程序運行得像一陣風,而有些卻慢得像在爬坡?答案可能藏在一個不起眼但至關重要的細節裏——內存對齊。今天,我們就來聊聊這個聽起來有點 “硬核”,但其實非常有趣的話題。我會用輕鬆的方式帶你走進內存對齊的世界,分享一些實用技巧和真實案例,讓你的 Golang 程序跑得更快!引言:一次意外的性能提升 -------------那是一個普通的週三下午,我正在優化一個 Golang 項目。 ⌘ Read more
DeepSeek-R1、OpenAI o3-mini 與谷歌 Gemini 2.0 Flash Thinking 這三大模型,通過 "推理架構" 將大語言模型的能力推向了新高度。它們標誌着人工智能領域正經歷一場根本性變革——從依賴訓練資源擴展轉向測試階段計算能力的突破。本文將通過 40 餘幅定製可視化圖表,帶您深入理解推理型大語言模型的核心原理、測試時計算機制,並重點剖析 DeepSeek-R1 ⌘ Read more
1\. 高可用複雜度模型核心思想 :遵循 “冗餘法則”,通過集羣化實現高可用,避免單點故障。 單機高可用不存在 :單機無法冗餘,高可用必須依賴集羣。 複雜度本質 :冗餘帶來的複雜性,包括狀態同步、故障切換、數據一致性等。 2. 計算高可用2.1 任務分配核心設計 :通過任務分配器(獨立服務器或 SDK)將任務分發到多個服務器。 ⌘ Read more
errgroup 是官方 Go 庫 x 中的一個實用工具,用於併發執行多個 goroutine 並處理錯誤。它基於 sync.WaitGroup 實現了 errgroup.Group,爲併發編程提供了更強大的功能。errgroup 的優勢------------與 sync.WaitGroup 相比,errgroup.Group 具有以下優勢:錯誤處理:sync.WaitGroup 只負責等待 g ⌘ Read more
一、Netty 核心架構解析--------------Netty 作爲高性能異步事件驅動框架,其核心設計採用 Reactor 線程模型。理解下面三個核心組件是配置優化的基礎:EventLoopGroup :本質是線程池,處理所有 IO 操作 ChannelPipeline :包含有序的處理器鏈(Handler) ByteBuf :零拷貝技術的 ⌘ Read more
ReaderLM-v2ReaderLM-v2 是 Jina AI 發佈的一個參數量爲 1.5B (15.4 億) 的小型語言模型,專用於將 HTML 轉爲 Markdown,也可轉爲 JSON 結構化數據。官方介紹https://jina.ai/news/readerlm-v2-frontier-small-language-model-for-html-to-markdown-and-json/ ⌘ Read more
你是否有遇到過這樣的情況:意外的流量激增導致數據庫掛起 系統掛掉,用戶無法訪問 做爲開發人員,你忙於調試問題,事後還會被扣除績效和獎金 不受控制的 goroutines,長時間運行的任務,無響應的 API 這些都會對構建一個高可用的應用造成嚴重影響。這些問題通常源於缺乏適當的上下文管理。無論您是在處理 API 請求、管理數據庫操作,還是構建分佈式系統,掌握上下文都是每個 Go ⌘ Read more
喵之前給大家介紹了一款微軟開源的文檔轉換工具 MarkItDown 但是 MarkItDown 有自身的侷限性,不能保留格式,熱心的粉絲朋友推薦了一個新的工具——MinerU\[1\]這款工具能夠將 PDF 文檔轉化爲機器可讀的格式(如 Markdown、JSON 等),極大地方便了文檔內容的提取和處理。在這裏特別感謝之前粉絲的留言,讓我們發現了這款寶藏工具! 項目簡介----MinerU 是 ⌘ Read more
一引 言在流量日益增長的今天,隨着用戶需求的不斷增加和性能要求的提升,一個能夠更好地處理高併發、低延遲和資源有效利用的計算層是十分重要的。儘管在過去我們平臺使用 Java 開發的計算層提供了穩定的服務支撐,但面對日益增長的流量和低延遲的需求,Java 不可避免地開始顯現侷限性:垃圾回收:Java 的自動內存管理依賴於垃圾回收機制,而垃圾回收雖然簡化了開發工作,卻可能引入不可預測的延遲。 內存 ⌘ Read more
軟件介紹 dufs 是一款輕量級的文件服務器工具,專爲快速、簡單的文件共享而設計。它基於 Rust 語言開發,性能卓越,資源佔用極低,適合在各種場景下使用。無論是局域網內的文件共享,還是遠程訪問,dufs 都能輕鬆應對。主要功能 強大的文件操作多文件批量上傳與下載支持多文件批量上傳和下載,同時保留文件夾結構的完整性,方便用戶對多個文件進行統一管理和操作。 文件搜索功能內置強大的文件搜 ⌘ Read more
MCP 簡介MCP 協議(Model Context Protocol,模型上下文協議)是由 Anthropic 於 2024 年 11 月底推出的一種開放標準,旨在統一大型語言模型(LLM)與外部數據源和工具之間的通信。官方地址 https://modelcontextprotocol.io 架構如下 MCP 協議的架構包含多個關鍵組件:Host(宿主程序)、MCP Client(M ⌘ Read more
背景 --------Go 1.24 已進 release,其版本說明 \[1\] 中包含了多項新特性。本文將重點解析新增的標準庫 os.Root 功能,它能有效防禦目錄遍歷漏洞(Directory Traversal Vulnerabilities)。目錄遍歷漏洞是典型的安全問題,攻擊者通過提供相對路徑(如 ../../../etc/passwd)誘導程序訪問非授權文件。近期真實案例 CVE- ⌘ Read more
擁有一個井然有序的目錄結構非常重要,原因有幾個:層次分離:它將項目的不同部分——如業務邏輯、數據訪問和 API 處理——放在各自的文件夾中。這樣,開發人員可以專注於特定領域,而不會感到不知所措或困惑。 更好的組織: 通過整齊地整理你的代碼及其依賴項,較大的項目變得更容易導航。你總是知道在哪裏找到你需要的東西! 可重用性: 一個良好的結構讓你可以創建可以在項目不同部分使用的組件或包,從而 ⌘ Read more
samber/lo 是一個非常流行的 Go 語言庫,它提供了一些常用的函數式編程風格的工具函數,使得 Go 代碼更加簡潔、優雅。該庫的設計理念是減少代碼冗餘,簡化開發過程,尤其是在處理常見的數據結構和算法時。lo 這個庫的名字來源於 "Lazily Optimized" 的縮寫,但它本身並不涉及延遲計算或優化策略。它的目標是提供一系列常見操作的簡便方法,尤其是集合類型(如切片、映射、通道等)的操作 ⌘ Read more
介紹 在現代 Web 開發中,實時數據推送已經成爲許多應用的核心需求。無論是股票行情、社交媒體通知,還是在線協作編輯,用戶都希望能夠即時獲取最新的信息。在這種背景下,服務器發送事件(Server-Sent Events,SSE)作爲一種輕量級的實時通信技術,提供了一種簡單而高效的解決方案。什麼是服務器發送事件 服務器發送事件(SSE)是一種基於 HTTP 協議的單向通信技術,允許服務器通過持久 ⌘ Read more
RAG 應用中遇到的外部文檔可能會非常大。因此,需要通過分塊(chunking)將大型文檔劃分爲更小且可管理的部分。這樣可以確保文本適配嵌入模型的輸入大小,同時還能夠提高檢索質量。接下來我將會介紹適用於 RAG 的五種分塊策略。1) 固定大小分塊 按預定義的字符數、單詞數或 Token 數量對文本進行切分,同時保留一定的重疊部分。這種方法實現簡單,但可能會將句子截斷,從而導致信息分散在不同的塊中 ⌘ Read more
RAG 工作流程劃分 首先,我們將 RAG 工作流程分爲三個部分,以增強我們對 RAG 的理解,並優化每個部分以提高整體性能: 預檢索 -------------在預檢索步驟中,需要準備 LLM 原始訓練數據集之外的新數據(也稱爲外部數據) ,並將其拆分成塊,然後使用向量模型對塊數據進行索引,該模型將數據轉換爲數值表示並將其存儲在向量數據庫中, 此過程創建了 LLM 可以理解的知識庫。 ⌘ Read more
在現代 Web 開發中,日誌管理是確保應用程序性能、穩定性和可維護性的關鍵因素之一。Gin 作爲輕量級的 Go Web 框架,自帶了簡單的日誌功能。然而,對於追求高性能和靈活性的開發者來說,Zap 日誌庫是一個理想的選擇。本文將深入探討如何在 Gin 框架中集成 Zap 日誌庫,實現高效、分級和結構化的日誌記錄。本文介紹瞭如何在 Go 的 Gin 框架中使用 Zap 日誌庫替換默認日誌功能,提供更 ⌘ Read more
pressly/goose 是一個用於 Go 語言的數據庫遷移工具。它提供了一種簡單且高效的方式來管理數據庫 schema 的版本控制,適用於數據庫結構變更的管理和遷移。goose 的設計目標是讓數據庫遷移更加簡便、安全,並且在多環境下可以輕鬆應用。數據庫遷移通常用於在應用程序中管理數據模式的變化(例如添加表、修改列、刪除索引等),尤其在團隊協作開發、生產環境發佈等情境下,遷移工具幫助開發者和運維 ⌘ Read more
回顧 2023 年 RAG 技術的發展,檢索增強生成(Retrieval-Augmented Generation,RAG)技術徹底改變了人工智能模型的工作方式,它將生成式人工智能的優勢與檢索現實世界文檔的精確性相結合。通過從外部來源提取相關數據,RAG 使得人工智能能夠生成更準確且上下文更合適的答案。 隨着這項技術的不斷髮展,RAG 的多種變體應運而生,每種變體都在解決不同的挑戰並提升人工 ⌘ Read more
github.com/iancoleman/orderedmap 是一個 Go 語言庫,提供了一個有序字典(OrderedMap)實現,區別於 Go 語言內建的 map 類型,內建的 map 是無序的。該庫的 OrderedMap 能夠保持元素的插入順序,因此適用於需要按插入順序遍歷元素的場景。主要特點:有序性:OrderedMap 保證元素的插入順序,和內建的 map 類型不同, ⌘ Read more
1、context 包的引入context 包是在 Go 1.7 引入的,它爲在多個 goroutine 之間傳遞請求範圍的上下文信息和控制 goroutine 的生命週期提供了一種標準的方式。2、context 包的主要作用傳遞上下文信息:context 可用於在 goroutine 之間傳遞請求範圍的數據,如請求的認證信息、請求的截止時間、請求的 ID 等。這些信息在 goroutine 之間 ⌘ Read more
Go Swagger(Swaggo)是一個用於 Go 語言的開源工具集,它幫助開發者自動生成 API 文檔。它利用 Go 的註釋和結構體信息,通過解析代碼,生成符合 OpenAPI 規範的文檔。OpenAPI(也稱爲 Swagger)是一個廣泛使用的 API 規範,它使得 API 文檔更加標準化、易於理解和交互。Swaggo 主要的功能包括:1. 自動生成 OpenAPI 文檔Swaggo 通過解 ⌘ Read more
在 Go 語言的世界裏,如何優雅地處理海量併發請求?事件驅動架構(Event-Driven Architecture, EDA)或許是你需要的答案。 🔥 爲什麼你需要關注事件驅動架構? ----------------------在傳統的同步編程模式下,我們通常採用阻塞調用的方式來處理請求。然而,在高併發、高吞吐的場景下,這種方式可能帶來以下問題:線程資源浪費:大量 Goroutine 在 I ⌘ Read more
大家好,這裏是浩道 Linux,今天給大家帶來 45 個高效 Linux 命令組合,用好這些命令,你會發現實際可以解決 99% 日常運維工作需求了。以下相關高效命令實用指數不分先後,更多的是以簡單的命令形式帶給大家更好的使用體驗。 1、如何快速創建多個相同類型的文件; 如創建名字爲 haodao1.py,haodao2.py 到 haodao100.py 的批量文件。touch haodao{ ⌘ Read more
我們常說 “勒緊褲腰帶過日子”“有多少錢辦多大事”,這些話體現了對有限資源的合理分配和規劃。對於企業來說也是如此,企業的經營戰略不僅需要資源,更需要合理的資源配置。如果把 70% 的資金都用在喫喝玩樂的應酬上,那麼企業能用到實處的資金就會大打折扣。預算管理是合理分配企業財務、實物及人力資源,以實現企業經營戰略,並在實施過程中進行全程控制的內部管理活動。實施預算管理是確保公司戰略按計劃執行、各部門經 ⌘ Read more
大家好,我是冰河既然是億級用戶應用,那麼高併發必然是其架構設計的核心要素,今天,冰河將介紹萬億級流量場景下,高併發基礎架構設計的一些通用設計方案。高併發架構設計的要點----------高併發意味着系統要應對海量請求。從冰河多年的面試經驗來看,很多面試者在面對 “什麼是高併發架構” 的問題時,往往會粗略地認爲一個系統的設計是否滿足高併發架構,就是看這個系統是否可以應對海量請求。再細問具體的細節時, ⌘ Read more
前面在「Go 代碼測試時怎麼打樁?給大家寫了幾個常用案例」中我們介紹了在單元測試中使用gomonkey爲代碼進行打樁的各種方法。今天我們介紹在 Go 單元測試中另外一個很好用的工具庫goconvey,上面說的gomonkey屬於在 Test Double 方面提供能力,也就是我們通常說的mock,用它們可以自定義一套實現來替換項目中的代碼實現。而goconvey則是一個幫助我們組織和管理測試用例的 ⌘ Read more
在人工智能快速發展的當下,大語言模型(LLM)技術取得了顯著進步,但也面臨諸多挑戰。檢索增強生成(RAG)技術應運而生,爲提升語言模型性能提供了新途徑。不過,傳統 RAG 存在一定侷限,而 Agentic RAG 則試圖突破這些瓶頸,帶來更強大的功能體驗。本文將探究二者的差異。傳統 RAG 的困境傳統 RAG 的工作流程主要包括:先將文檔進行編碼,通過嵌入模型轉化爲向量形式存儲在數據庫中。當接收到 ⌘ Read more
LLM Agent 概述當您遇到沒有簡單答案的問題時,您通常需要遵循幾個步驟,仔細思考並記住您已經嘗試過的內容。LLM 代理正是爲語言模型應用程序中的這些情況而設計的。它們結合了全面的數據分析、戰略規劃、數據檢索以及從過去的行動中學習以解決複雜問題的能力。在本文中,我們將探討什麼是 LLM 代理、它們的好處、能力、實際示例以及他們面臨的挑戰。什麼是 LLM Agent?-------------- ⌘ Read more
1、當前框架簡述 向量和圖譜是兩種重要的知識載體,當然大模型時代參數可能是更重要的載體,但是目前來講太大了,暫時還沒有端側的有效模型可用。 向量的神奇之處在於它們各自以編碼形式捕獲了其對應文本的本質,向量的價值更多體現在相似度計算上,也就是你需要確定一段文本與另一段文本的相似度時。 但是,如果你想理解向量內部的含義、瞭解文本中表示的事物、洞察其與更大規模語境的關係,那使用向量表示 ⌘ Read more
概述前面的文章:已經說明了文檔上傳的總體步驟。當上傳一個或多個文檔後,dify 會啓動索引的構建任務來處理文檔內容,並構建索引。本文介紹文檔索引構建的實現邏輯。documentindexingtask 函數新建文檔的索引構建在函數documentindexingtask中實現,該函數的總體邏輯如下圖:上傳文檔的處理在 documentindexingtask 函數中進行。該函數主要是記錄文檔的狀態 ⌘ Read more
背景 --------當今的數據中心和應用程序在高度動態的環境中運行,爲了應對高度動態的環境,它們通過額外的服務器進行橫向擴展,並且根據需求進行擴展和收縮。同時,服務器和網絡故障也很常見。因此,系統必須在正常操作期間處理服務器的上下線。它們必須對變故做出反應並在幾秒鐘內自動適應;對客戶來說的話,明顯的中斷通常是不可接受的。幸運的是,分佈式共識可以幫助應對這些挑戰。拜占庭將軍 在介紹共識算法 ⌘ Read more
https://github.com/chonkie-ai在自然語言處理(NLP)中,RAG(檢索增強生成)技術可謂大放異彩。它能讓模型藉助大量文本數據,生成更精準、更豐富的內容。不過,在 RAG 的實際運用中,有個關鍵環節卻常常讓開發者們頭疼不已,那就是文本分塊(Chunking)。今天,就給大家介紹一款堪稱 “救星” 的神器 ——Chonkie 庫,讓 RAG 中的文本分塊難題迎刃而解!爲啥文 ⌘ Read more
谷歌身份驗證器(或其他類型的雙因素身份驗證器)如何工作?谷歌身份驗證器是一種基於軟件的身份驗證器,可實現兩步驗證服務(2FA)。下圖提供了詳細信息。其中涉及兩個階段:階段 1 - 用戶啓用 Google 兩步驗證 階段 2 - 用戶使用驗證器登錄 第一階段----步驟 1 和 2:Bob 打開網頁以啓用兩步驗證。前端請求一個密鑰。驗證服務會爲 Bob 生成密鑰,並將其存儲在數據庫中。 ⌘ Read more
在 Go 語言的開發過程中,我們經常需要執行可能失敗的操作,比如網絡請求。如果每次失敗都直接報錯並終止程序,用戶體驗就會很差。通常的做法是重試,即在失敗後等待一段時間再嘗試重新執行。retry-go (github.com/avast/retry-go) 是一個輕量級的 Go 語言重試庫,提供簡單易用的「重試機制」,支持:自定義重試策略(固定間隔、指數回退、隨機回退)。 最大重試次數(避免無 ⌘ Read more
前言領域驅動設計(DDD)和微服務架構是兩種在架構設計領域廣泛應用的方法。它們都旨在通過從業務視角分離應用系統的複雜度來提高系統響應力。這篇文章將詳細介紹 DDD 的基本概念、名詞解釋、架構模式以及如何對現有系統進行重構。什麼是 DDD(領域驅動設計)DDD 是一種架構設計方法,強調從業務出發合理劃分領域邊界,調整現有架構並優化代碼,以實現演進式架構。其核心理念是通過領域拆分解決複雜業務問題,控制 ⌘ Read more
在瞭解了上一篇文章的 net/rpc 內容(從 Go 應用中的 net/rpc 到 gRPC)後,現在是時候深入瞭解 HTTP/2 了,它是 gRPC 協議的基礎。HTTP/2 原理及 Go 實戰指南本文偏重理論講解,內容會比較密集。我們主要聚焦 HTTP/2 的核心概念,之後簡要介紹如何在 Go 中啓用它。建議泡杯咖啡,坐下來慢慢看,讓我們一步步拆解這個話題。HTTP/2 優勢--------- ⌘ Read more
DeepSeek-R1 的發佈在 AI 發展進程中具有里程碑式的意義,尤其對機器學習研發社區而言意義重大,主要原因有二:開源策略:提供了經過輕量化處理的蒸餾版本 技術透明:公開分享瞭如何構建類似 OpenAI O1 這樣對的推理模型的完整訓練方法 接下來,讓我們深入瞭解這個模型是如何構建的。 一、大語言模型的基本訓練流程DeepSeek-R1 與其他大語言模型一樣,採用逐詞生成的方 ⌘ Read more
Go 1.24 通過新增 go:wasmexport 指令和構建 WASI 反應器(Reactor)的能力,顯著增強了其 WebAssembly(Wasm)支持。這些特性使開發者能夠將 Go 函數導出到 Wasm 模塊,實現與 Wasm 主機的深度集成,拓展了 Go 在 Wasm 應用開發中的可能性。WebAssembly 與 WebAssembly 系統接口(WASI)------------- ⌘ Read more
govalidator 是一個用 Go 語言編寫的輕量級的驗證庫,提供了豐富的驗證和清理功能,主要用於驗證和清理用戶輸入的數據(如表單數據、API 請求的 JSON 數據等)。它支持常見的數據驗證功能,如電子郵件、URL、IP 地址、信用卡號等的驗證,同時也支持自定義驗證規則。1. 安裝你可以通過 go get 來安裝 govalidator:go get github.com/asaskevic ⌘ Read more
基本概念強化學習 (Reinforcement Learning)強化學習 (RL) 是一種機器學習,其中 AI 通過採取行動並根據這些行動獲得獎勵或懲罰來進行學習。目標是隨着時間的推移最大化獎勵。示例:想象一下教機器人玩遊戲。機器人嘗試不同的動作,每做一次好動作(例如得一分),它都會得到獎勵(例如 +1)。做錯動作(例如丟一分),它會受到懲罰(例如 -1)。隨着時間的推移,機器人會了解哪些動作可 ⌘ Read more
cgpu目前市面上大部分文章都只提了一下通過攔截驅動 ioctl、mmap、read、write 接口的調用來實現內核虛擬化,但是具體怎麼實現沒有描述。內核虛擬化是從阿里最先有的,這篇 文章 \[1\] 對 cgpu 是分析的最深入的。也提供了一個之前版本的代碼:https://github.com/lvmxh/cgpu.git由於代碼裏面的核心部分 cgpu.o 沒有開源,所以只能分析一些非核心的 ⌘ Read more
GPU 發展簡史1981 年,最早的顯卡:是 IBM 推出的 5150 PC(Personal Computer,個人電腦)上所搭載的 MDA 和 CGA 兩款 2D 加速卡。 1988 年,第一代 VGA Card(顯卡):只具備圖像顯示功能,輸出 640×480 分辨率、256 彩色圖像,而真正的圖形運算還是全部依賴 CPU,所以當 Microsoft Windows 圖形化操作系統出現 ⌘ Read more
GORM 是 Go 語言中最流行的 ORM 之一,它簡化了數據庫操作,提升了開發效率。然而,在某些情況下,標準的數據類型無法滿足複雜業務需求。例如,如何將 Go 中的結構體、切片、JSON 等類型映射到數據庫字段?如何方便地進行序列化和反序列化?爲了解決這些問題,GORM 提供了 datatypes (gorm.io/datatypes) 擴展庫,旨在簡化 Go 語言中複雜數據類型與數據庫字段之間 ⌘ Read more
開篇:當實時性遇見批量處理 --------------在處理大量數據時,我們通常面臨兩個選擇:單條處理 和 批量處理。前者處理及時,但系統開銷大;後者吞吐量高,但可能增加延遲。那麼,有沒有一種方式能兼顧兩者的優勢?答案是——實時批處理(Real-time Batching)。爲什麼選擇 Go? -------------1.1 天生爲併發而生Go 的 Goroutine 和 Channel 機 ⌘ Read more
WorkQueue 作爲一種強大的任務處理機制,具有異步執行、靈活調度等特點,使其在中斷處理、異步任務處理等場景中發揮着不可或缺的作用;通過 Linux 內核中的實際應用案例以及項目實踐,我們看到了 WorkQueue 在提高系統性能和穩定性方面的顯著效果。今天,我們將一同探索 WorkQueue 這一強大工具,它就像是一位隱藏在幕後的效率大師,能夠有條不紊地處理各種任務,幫助我們打破效率瓶頸。無 ⌘ Read more
今天咱們聊點技術性的東西,具體說一下 Go 語言中的 for select 語句,特別是在面試中經常被問到的兩個問題。題目 1:for select 語句中,如果通道已經關閉了,會怎麼樣?這道題乍一聽簡單,但其實是面試官最喜歡用來考察你是否真正理解 Go 中通道機制的題目之一。假設你在寫一個需要從通道讀取數據的程序,然後突然有人關了通道,你會怎麼處理?程序會怎麼樣?如果你把這個問題想得很簡單,你可 ⌘ Read more
“你的系統能扛住每秒 10 萬次非法請求嗎?” 京東三面現場,面試官突然拋出一道高壓題。 剛畢業的小王手心冒汗,腦海中閃過無數方案卻又一一否決。 今天,我們就拆解這道價值 30k 的面試題——十億級非法 Key 攻擊防禦術,文末附可直接複用的代碼模板!一、面試官到底在問什麼? 面試官視角: 1. 你是否經歷過真實高併發場景? 2. 能否識別緩存體系致命漏洞? 3. 能 ⌘ Read more
一、前言----隨着人工智能和深度學習技術的迅猛發展,卷積神經網絡(Convolutional Neural Networks,CNN)已經成爲計算機視覺領域中最爲重要的工具之一。無論是在圖像分類、目標檢測,還是在人臉識別、自動駕駛等應用中,CNN 都展現出了其卓越的表現和廣泛的應用前景。本文旨在通過深入的實戰案例,帶領讀者一步步理解並掌握 CNN 的核心原理及其在圖片識別中的應用。我們將通過實際 ⌘ Read more
在今年的春節期間,DeepSeek 火出了圈。憑藉 DeepSeek-V3 與 DeepSeek-R1 的創新技術和卓越表現,DeepSeek 迅速成爲了行業內外的焦點。不管是技術專家還是普通用戶,都對 DeepSeek 讚不絕口。我們特別準備了這篇技術科普文章,期望無論你是不是技術同學,都能夠讀懂 DeepSeek。01 DeepSeek 系列模型的技術創新表 1. DeepSeek 關鍵 ⌘ Read more
在 Go 語言中,使用 Redis 實現延時任務隊列可以通過 Sorted Set(ZSet) 結合 輪詢機制 或 Pub/Sub 實現。以下是詳細實現方案,以及延時任務與定時任務的區別和應用場景分析。一、延時任務隊列的實現(Go + Redis)核心思路存儲結構:使用 Redis 的 Sorted Set(ZSet),以任務的 執行時間戳 作爲分數(Score),任務內容作爲成員(Member) ⌘ Read more
當使用 Go 開發 Web 服務時,實現正確的關機處理對於維護系統可靠性和數據完整性至關重要。優雅關機能確保服務在終止前完成現有操作,而不是突然停止導致任務未完成。核心概念解析------優雅關機需要協調終止信號接收、進行中的操作和資源清理。在 Go 中,通常通過信號處理、goroutine 和基於上下文的取消機制來實現。以下是最小化實現示例:package mainimport ( "co ⌘ Read more
大家好,我是煎魚。新版本 Go1.24 在 2 月 11 號已經正式發佈,如果先前還沒有留到的同學,可以關注下是否跟進了。先前我們已經更新了多篇新特性介紹。今天將會是最後一篇知識點的收尾。操作系統要求------Linux 內核版本 = 3.2在本次 Go1.24 新版本開始,需要 Linux 內核 3.2 版本或更高版本(劃重點)。如果公司裏的集羣環境歷史底蘊比較深的,建議升級前檢查一下。( ⌘ Read more=
什麼是 一致性 hash 算法---------------首先摘抄一段維基百科的定義 一致哈希 是一種特殊的哈希算法。在使用一致哈希算法後,哈希表槽位數(大小)的改變平均只需要對𝐾/𝑛 個關鍵字重新映射,其中 𝐾 是關鍵字的數量,𝑛是槽位數量。然而在傳統的哈希表中,添加或刪除一個槽位的幾乎需要對所有關鍵字進行重新映射。 --- wikipedia分佈式系統中, 一致性 hash 無處不在,C ⌘ Read more
omitzero
:JSON 處理的福音**使用 omitempty 忽略 JSON 中的可選字段 (Go 1.24 之前)------------------------------------------當你有一個要轉換爲 JSON 的結構體時,你可能有一些字段是可選的。例如,我們採用以下結構體:type Response struct { ID string json:"id" // 其他字段省略 UpdatedA ⌘ Read more
本文比較 vllm 和 ollama 在不同場景中的表現。我們將重點關注:資源利用率和效率、部署和維護的簡易性、具體用例和建議、安全和生產準備、文檔。關於 LangChatLangChat 是 Java 生態下企業級 AIGC 項目解決方案,集成 RBAC 和 AIGC 大模型能力,幫助企業快速定製 AI 知識庫、企業 AI 機器人。支持的 AI 大模型: Gitee AI / 阿里通義 / ⌘ Read more
DeepSeek-R1 7B、32B、671B 差距有多大?先說結論,相比 “滿血版”671B 的 DeepSeek-R1,蒸餾版差不多就是“牛肉風味肉卷” 和“牛肉卷”的差距…最近 Deepseek 成爲了 AI 圈中最火爆的話題,一方面通過稀疏激活的 MoE 架構、MLA 注意力機制優化及混合專家分配策略等創新手段,實現了高效的訓練和推理能力,同時大幅降低了 API 調用成本,達到了行業領先水 ⌘ Read more
在互聯網基礎設施的基石中,DNS(域名系統)堪稱最優雅的分佈式系統設計典範。這個將域名轉換爲 IP 地址的魔法系統,每秒處理着數以億計的查詢請求。Go 語言憑藉其簡潔的併發模型和高效的網絡編程能力,成爲實現 DNS 協議的絕佳選擇。理解 DNS 協議需要把握三個核心要素:分層樹狀結構的域名空間 UDP/TCP 雙協議支持 資源記錄(RR)的二進制編碼規範 Go 語言標準庫中的ne ⌘ Read more
原文鏈接:https://dev.to/bespoyasov/clean-architecture-on-frontend-4311譯者: Goodme 前端團隊 陸晨傑不久前,我做了一個關於前端簡潔架構(clean architecture on frontend)的演講。在這篇文章中,我將概述那次演講,並對其進行了一些擴展。我在這裏附了一些含有不錯的內容的鏈接,這些對後續的閱讀會有一些幫助。T ⌘ Read more
LLM:會 “思考” 的 AI---------------我們可以把 LLM(Large Language Model,大語言模型)想象成是一個讀了海量書籍的 “數字大腦”,它的訓練數據來自互聯網上的海量文本,讓它具備了理解語言、生成文本、分析邏輯的能力。假設你想知道 Kubernetes 最新的發行版本,你直接向 DeepSeek 詢問: “Kubernetes 最新發行版本是什麼”不幸的是 ⌘ Read more
在現代分佈式系統中,反向代理扮演着數字交通警察的角色。它不僅是客戶端與服務端之間的智能中介,更是系統架構中不可或缺的流量調度中心。典型的應用場景包括:負載均衡:智能分配請求到後端服務器集羣 安全防護:作爲安全邊界過濾惡意請求 協議轉換:統一處理不同通信協議 緩存加速:對靜態資源進行邊緣緩存 服務聚合:整合多個微服務的響應結果 Go 語言憑藉其獨特的併發模型和卓越的性能 ⌘ Read more
在 Linux 操作系統的龐大體系中,文件系統扮演着至關重要的角色,而其中的緩衝區(buffer)更是理解文件系統運行機制的關鍵所在。你是否好奇,當我們在 Linux 系統中進行文件的讀寫操作時,數據是如何在內存和磁盤之間高效傳輸的?爲什麼有時候我們修改了文件內容,卻沒有立刻在磁盤上看到更新?這些問題的答案,都與 Linux 內核文件系統的緩衝區密切相關。深入研究緩衝區,不僅能讓我們更好地理解操作 ⌘ Read more
在 Go 語言中,處理集合(如切片、映射等)時,可以通過多種方式提高效率。以下是一些常見的高效處理集合的方法,結合詳細的代碼例子進行講解。1. 使用切片(Slice)代替數組切片是 Go 中常用的集合類型,它比數組更靈活,因爲切片的長度是可變的。package mainimport "fmt"func main() { // 創建一個切片 numbers := \[\]int{1, 2, ⌘ Read more=