」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 透過 Web 搜尋功能增強您的 RAG 應用程式!

透過 Web 搜尋功能增強您的 RAG 應用程式!

發佈於2024-11-08
瀏覽:791

Enhance Your RAG Application With Web Searching Capability!

介紹

當使用檢索增強生成(RAG)應用程式建立有趣的項目時,我們經常面臨瀏覽限制等限制,這使得很難獲取最新資訊或當前數據,例如天氣更新(我希望有更有趣的東西) 。為了解決這個問題,我們可以為 RAG 應用程式配備搜尋網路的工具。讓我們開始吧!

 我們的工具台

  • LangChain(使用大型語言模型建立應用程式的框架)
  • SearXNG(免費元搜尋引擎)
  • CPython(C 語言包裝器 :> )
  • Docker(一個拿著涼麵包的男人)

設定

首先我們從 SearXNG 安裝開始。

1 -) 取得 SearXNG-docker

git 複製 https://github.com/searxng/searxng-docker.git

2 -) 編輯 .env 檔案以設定主機名稱和電子郵件

3 -) 產生金鑰



sed -i "s|ultrasecretkey|$(openssl rand -hex 32)|g" searxng/settings.yml


sed -i"" -e "s|ultrasecretkey|$(openssl rand -hex 32)|g" searxng/settings.yml 


$randomBytes = New-Object byte[] 32
(New-Object Security.Cryptography.RNGCryptoServiceProvider).GetBytes($randomBytes)
$secretKey = -join ($randomBytes | ForEach-Object { "{0:x2}" -f $_ })
(Get-Content searxng/settings.yml) -replace 'ultrasecretkey', $secretKey | Set-Content searxng/settings.yml

4 -) 更新searxng/settings.yml以啟用可用的搜尋格式並停用我們的LangChain實例的限制器:

use_default_settings: true
server:
  # base_url is defined in the SEARXNG_BASE_URL environment variable, see .env and docker-compose.yml
  secret_key: ""  # change this!
  limiter: false
  image_proxy: true
ui:
  static_use_hash: true
redis:
  url: redis://redis:6379/0

search:
    formats:
        - html
        - json

5-) 運行 SearXNG 實例

docker 組成

檢查 Docker 中的 SearXNG 部署。如果一切看起來都不錯,您就可以繼續了。

 演示應用程式

1 -) 創建虛擬環境並啟動

python3 -m venv .venv
source .venv/bin/activate

2 -) 安裝Langchain

pip install langchain langchain-community

3 -) 建立main.py

## Simple Get Results
from langchain_community.utilities import SearxSearchWrapper
import pprint

s = SearxSearchWrapper(searx_host="http://localhost:8080",)
result = s.results("What is RAG?", num_results=10, engines=["google"])
pprint.pprint(result)

## Github Tool

from langchain_community.tools.searx_search.tool import SearxSearchResults

wrapper = SearxSearchWrapper(searx_host="**")
github_tool = SearxSearchResults(name="Github", wrapper=wrapper,
                            kwargs = {
                                "engines": ["github"],
                                })

這就是你得到的!您的 RAG 應用程式現在具有搜尋功能。本指南沒有介紹任何新內容,而是旨在匯總向 RAG 應用程式添加 Web 搜尋功能的步驟。希望對您有幫助!

版本聲明 本文轉載於:https://dev.to/iamnotagentleman/enhance-your-rag-application-with-web-searching-capability-lnn?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • Go web應用何時關閉數據庫連接?
    Go web應用何時關閉數據庫連接?
    在GO Web Applications中管理數據庫連接很少,考慮以下簡化的web應用程序代碼:出現的問題:何時應在DB連接上調用Close()方法? ,該特定方案將自動關閉程序時,該程序將在EXITS EXITS EXITS出現時自動關閉。但是,其他考慮因素可能保證手動處理。 選項1:隱式關閉終...
    程式設計 發佈於2025-04-18
  • 為你的所見即所得編輯器添加圖像編輯功能
    為你的所見即所得編輯器添加圖像編輯功能
    图像编辑是每个Wysiwyg编辑器的强大功能。它极大地增强了应用程序的功能,并使想要使用上传图像做更多更多事情的用户感到高兴。 如今,用户期望应用程序具有图像编辑功能,但是实现此类功能并不像听起来那么琐碎。 上传图像和其他媒体可能是编辑器具有的正常功能,但是图像编辑通常不是。这就是为什么在本教程中,...
    程式設計 發佈於2025-04-18
  • 為什麼HTML無法打印頁碼及解決方案
    為什麼HTML無法打印頁碼及解決方案
    無法在html頁面上打印頁碼? @page規則在@Media內部和外部都無濟於事。 HTML:Customization:@page { margin: 10%; @top-center { font-family: sans-serif; font-weight: ...
    程式設計 發佈於2025-04-18
  • 如何避免Go語言切片時的內存洩漏?
    如何避免Go語言切片時的內存洩漏?
    ,a [j:] ...雖然通常有效,但如果使用指針,可能會導致內存洩漏。這是因為原始的備份陣列保持完整,這意味著新切片外部指針引用的任何對象仍然可能佔據內存。 copy(a [i:] 對於k,n:= len(a)-j i,len(a); k
    程式設計 發佈於2025-04-18
  • 如何正確使用與PDO參數的查詢一樣?
    如何正確使用與PDO參數的查詢一樣?
    在pdo 中使用類似QUERIES在PDO中的Queries時,您可能會遇到類似疑問中描述的問題:此查詢也可能不會返回結果,即使$ var1和$ var2包含有效的搜索詞。錯誤在於不正確包含%符號。 通過將變量包含在$ params數組中的%符號中,您確保將%字符正確替換到查詢中。沒有此修改,PD...
    程式設計 發佈於2025-04-18
  • NLTK如何高效地將文本分割成句子?
    NLTK如何高效地將文本分割成句子?
    如何有效地將文本分配到句子將文本分配到句子中可能是一個棘手的任務。縮寫和句子內的使用時的微妙之處可能會構成挑戰。 While many approaches exist, one effective method involves leveraging the Natural Language To...
    程式設計 發佈於2025-04-18
  • eval()vs. ast.literal_eval():對於用戶輸入,哪個Python函數更安全?
    eval()vs. ast.literal_eval():對於用戶輸入,哪個Python函數更安全?
    稱量()和ast.literal_eval()中的Python Security 在使用用戶輸入時,必須優先確保安全性。強大的python功能eval()通常是作為潛在解決方案而出現的,但擔心其潛在風險。 This article delves into the differences betwee...
    程式設計 發佈於2025-04-18
  • 如何更改選擇框選項的背景顏色?
    如何更改選擇框選項的背景顏色?
    如何在打開時如何更改選擇框選項的背景顏色在嘗試自定義選擇框時,您會遇到難度在激活時更改選項的難度。要解決這個問題,至關重要的是針對正確的html元素。 高級自定義: { 背景:RGBA(150、150、150、0.3); } [2 選項1 選項2 < 背景:藍色; }
    程式設計 發佈於2025-04-18
  • 表單刷新後如何防止重複提交?
    表單刷新後如何防止重複提交?
    在Web開發中預防重複提交 在表格提交後刷新頁面時,遇到重複提交的問題是常見的。要解決這個問題,請考慮以下方法: 想像一下具有這樣的代碼段,看起來像這樣的代碼段:)){ //數據庫操作... 迴聲“操作完成”; 死(); } ? > ...
    程式設計 發佈於2025-04-18
  • 如何在Java中正確顯示“ DD/MM/YYYY HH:MM:SS.SS”格式的當前日期和時間?
    如何在Java中正確顯示“ DD/MM/YYYY HH:MM:SS.SS”格式的當前日期和時間?
    如何在“ dd/mm/yyyy hh:mm:mm:ss.ss”格式“ gormat 解決方案:的,請訪問量很大,並應為procectiquiestate的,並在整個代碼上正確格式不多: java.text.simpledateformat; 導入java.util.calendar; 導入java...
    程式設計 發佈於2025-04-18
  • Android如何向PHP服務器發送POST數據?
    Android如何向PHP服務器發送POST數據?
    在android apache httpclient(已棄用) httpclient httpclient = new defaulthttpclient(); httppost httppost = new httppost(“ http://www.yoursite.com/script.p...
    程式設計 發佈於2025-04-18
  • 如何將PANDAS DataFrame列轉換為DateTime格式並按日期過濾?
    如何將PANDAS DataFrame列轉換為DateTime格式並按日期過濾?
    Transform Pandas DataFrame Column to DateTime FormatScenario:Data within a Pandas DataFrame often exists in various formats, including strings.使用時間數據時...
    程式設計 發佈於2025-04-18
  • HTML格式標籤
    HTML格式標籤
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    程式設計 發佈於2025-04-18
  • 您可以使用CSS在Chrome和Firefox中染色控制台輸出嗎?
    您可以使用CSS在Chrome和Firefox中染色控制台輸出嗎?
    在javascript console 中顯示顏色是可以使用chrome的控制台顯示彩色文本,例如紅色的redors,for for for for錯誤消息? 回答是的,可以使用CSS將顏色添加到Chrome和Firefox中的控制台顯示的消息(版本31或更高版本)中。要實現這一目標,請使用以下...
    程式設計 發佈於2025-04-18
  • 快速解決MySQL "root@localhost訪問被拒"錯誤
    快速解決MySQL "root@localhost訪問被拒"錯誤
    [2 求解'root'user 的mysql“訪問拒絕”錯誤 常見的mysql錯誤“訪問用戶'root'@'localhost'(使用密碼:yes)”通常會導致用戶沿著複雜解決方案的兔子孔掉落。 幸運的是,一個簡單的修復程序通常可行。 而不是複雜的...
    程式設計 發佈於2025-04-18

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3