LlamaIndex 和 Elasticsearch Rerankers:無與倫比的簡潔

作者:來自 Elastic?Jeffrey Rengifo

了解如何從 LlamaIndex RankGPT reranker 遷移到 Elastic 內置的 semantic reranker。

Elasticsearch 擁有與行業領先的 Gen AI 工具和服務商的原生集成。查看我們的網絡研討會,了解如何突破 RAG 基礎,或使用 Elastic Vector Database 構建可投入生產的應用。

為了為你的使用場景構建最佳搜索方案,可以立即開始免費云試用,或在本地機器上嘗試 Elastic。


在本文中,我們將探討如何使用 Llamaindex RankGPT Reranker 和 Elasticsearch 內置的 semantic reranker。Elastic 提供開箱即用的體驗,在 retrievers pipeline 中部署和使用 reranker,無需額外操作,且具備可擴展性。

最初,在 Elasticsearch 中進行 rerank 需要多個步驟,但現在它已經直接集成進 retrievers pipeline:第一階段運行搜索查詢,第二階段對結果進行 rerank,如下圖所示:

什么是 rerank?

Rerank 是一種在檢索出一組與用戶查詢相關的文檔后,使用較昂貴的機制將最相關的文檔推到結果頂部的過程。

有許多策略可以使用專門的 cross-encoder 模型對文檔進行 rerank,比如 Elastic Rerank 模型,或 MS Marco 的 Cross encoder( cross-encoder/ms-marco-MiniLM-L6-v2)。另一種方法是使用 LLM 進行 rerank。Elastic Rerank 模型的一個優點是,它既可以作為 semantic search pipeline 的一部分使用,也可以作為獨立工具改進現有的 BM25 打分系統。

一個 reranker 需要一組候選文檔和用戶查詢,根據用戶查詢重新排序這些候選文檔,從最相關到最不相關。

在本文中,我們將探索 Llamaindex RankGPT Reranker(即 RankGPT reranker 實現)和 Elastic Semantic Reranker,后者使用 Elastic Rerank 模型。

完整示例可在此 notebook 中查看。

步驟

  • Products 索引
  • 用戶問題
  • LlamaIndex rerank
  • Elasticsearch semantic rerank

Products 索引

讓我們基于用戶的問題為筆記本電腦創建一個 reranker。如果用戶是重度玩家,他們應該獲得性能最強的機器。如果他們是學生,輕便的機器可能就可以了。

讓我們從在 Notebook 中創建一些文檔開始:

products = [{"name": "ASUS ROG Strix G16","description": "Powerful gaming laptop with Intel Core i9 and RTX 4070.","price": 1899.99,"reviews": 4.7,"sales": 320,"features": ["Intel Core i9","RTX 4070","16GB RAM","512GB SSD","165Hz Display",],},{"name": "Razer Blade 15","description": "Premium gaming laptop with an ultra-slim design and high refresh rate." ,"price": 2499.99,"reviews": 4.6,"sales": 290,"features": ["Intel Core i7","RTX 4060","16GB RAM","1TB SSD","240Hz Display",],},{"name": "Acer Predator Helios 300","description": "Affordable yet powerful gaming laptop with RTX graphics.","price": 1399.99,"reviews": 4.5,"sales": 500,"features": ["Intel Core i7","RTX 3060","16GB RAM","512GB SSD","144Hz Display",],},{"name": "MSI Stealth 17","description": "High-performance gaming laptop with a 17-inch display.","price": 2799.99,"reviews": 4.8,"sales": 200,"features": ["Intel Core i9", "RTX 4080", "32GB RAM", "1TB SSD", "4K Display"],},{"name": "Dell XPS 15","description": "Sleek and powerful ultrabook with a high-resolution display.","price": 2199.99,"reviews": 4.7,"sales": 350,"features": ["Intel Core i7","RTX 3050 Ti","16GB RAM","1TB SSD","OLED Display",],},{"name": "HP Omen 16","description": "Gaming laptop with a balanced price-to-performance ratio.","price": 1599.99,"reviews": 4.4,"sales": 280,"features": ["AMD Ryzen 7","RTX 3060","16GB RAM","512GB SSD","165Hz Display",],},{"name": "Lenovo Legion 5 Pro","description": "Powerful Ryzen-powered gaming laptop with high refresh rate.","price": 1799.99,"reviews": 4.6,"sales": 400,"features": ["AMD Ryzen 9","RTX 3070 Ti","16GB RAM","1TB SSD","165Hz Display",],},{"name": "MacBook Pro 16","description": "Apple's most powerful laptop with M3 Max chip.","price": 3499.99,"reviews": 4.9,"sales": 500,"features": ["Apple M3 Max","32GB RAM","1TB SSD","Liquid Retina XDR Display",],},{"name": "Alienware m18","description": "High-end gaming laptop with extreme performance.","price": 2999.99,"reviews": 4.8,"sales": 150,"features": ["Intel Core i9","RTX 4090","32GB RAM","2TB SSD","480Hz Display",],},{"name": "Samsung Galaxy Book3 Ultra","description": "Ultra-lightweight yet powerful laptop with AMOLED display.","price": 2099.99,"reviews": 4.5,"sales": 180,"features": ["Intel Core i7","RTX 4070","16GB RAM","512GB SSD","AMOLED Display",],},{"name": "Microsoft Surface Laptop 5","description": "Sleek productivity laptop with great battery life.","price": 1699.99,"reviews": 4.3,"sales": 220,"features": ["Intel Core i7", "16GB RAM", "512GB SSD", "Touchscreen"],},{"name": "Gigabyte AORUS 17","description": "Performance-focused gaming laptop with powerful cooling.","price": 1999.99,"reviews": 4.6,"sales": 250,"features": ["Intel Core i9","RTX 4070","16GB RAM","1TB SSD","360Hz Display",],},
]

用戶問題

讓我們定義一個將用于 rerank 結果的問題。

user_query = "Best laptops for gaming"

LlamaIndex rerank

安裝依賴并導入包

我們安裝執行 LlamaIndex 的 RankGPT reranker 和 Elasticsearch 文檔檢索所需的所有依賴。然后,我們將筆記本電腦數據加載到 ElasticsearchStore 中,ElasticsearchStore 是 LlamaIndex 對 Elasticsearch 向量數據庫的抽象,并使用 VectorStoreIndex 類進行檢索。

pip install llama-index-core llama-index-llms-openai rank-llm llama-index-postprocessor-rankgpt-rerank llama-index-vector-stores-elasticsearch elasticsearch -qimport os
import nest_asyncio
from getpass import getpassfrom llama_index.vector_stores.elasticsearch import ElasticsearchStore
from llama_index.core import (Document,VectorStoreIndex,QueryBundle,Settings,StorageContext,
)
from llama_index.core.retrievers import VectorIndexRetriever
from llama_index.postprocessor.rankgpt_rerank import RankGPTRerank
from llama_index.llms.openai import OpenAIfrom elasticsearch import Elasticsearchnest_asyncio.apply()

設置密鑰:

os.environ["OPENAI_API_KEY"] = "OPENAI_API_KEY"
os.environ["ELASTICSEARCH_ENDPOINT"] = "ELASTIC_ENDPOINT"
os.environ["ELASTICSEARCH_API_KEY"] = "ELASTIC_API_KEY"INDEX_NAME = "products-laptops"

Elasticsearch 客戶端

我們實例化 Elasticsearch 客戶端,用于索引文檔并針對我們的集群運行查詢。

_client = Elasticsearch(os.environ["ELASTICSEARCH_ENDPOINT"],api_key=os.environ["ELASTICSEARCH_API_KEY"],
)

Mappings

我們將使用普通文本字段進行全文搜索,并創建一個 semantic_field,復制所有內容,以便運行 semantic 和 hybrid 查詢。在 Elasticsearch 8.18+ 中,推理端點將自動部署。

# Creating mapping for the index
try:_client.indices.create(index=INDEX_NAME,body={"mappings": {"properties": {"metadata": {"properties": {"name": {"type": "text", "copy_to": "semantic_field"},"description": {"type": "text","copy_to": "semantic_field",},"price": {"type": "float",},"reviews": {"type": "float",},"sales": {"type": "integer"},"features": {"type": "keyword","copy_to": "semantic_field",},}},"semantic_field": {"type": "semantic_text"},"text": {"type": "text"},  # Field to store the text content for LlamaIndex"embeddings": {"type": "dense_vector", "dims": 512},}}},)print("index created successfully")
except Exception as e:print(f"Error creating inference endpoint: {e.info['error']['root_cause'][0]['reason'] }")

向 LlamaIndex 索引數據

從我們定義的產品數組創建 ElasticsearchStore。這將創建一個 Elasticsearch 向量存儲,后續可以使用 VectorStoreIndex 進行訪問。

document_objects = []es_store = ElasticsearchStore(es_url=os.environ["ELASTICSEARCH_ENDPOINT"],es_api_key=os.environ["ELASTICSEARCH_API_KEY"],index_name=INDEX_NAME,embedding_field="embeddings",text_field="text",
)storage_context = StorageContext.from_defaults(vector_store=es_store)for doc in products:text_content = f"""Product Name: {doc["name"]}Description: {doc["description"]}Price: ${doc["price"]}Reviews: {doc["reviews"]} starsSales: {doc["sales"]} units soldFeatures: {', '.join(doc["features"])}"""metadata = {"name": doc["name"],"description": doc["description"],"price": doc["price"],"reviews": doc["reviews"],"sales": doc["sales"],"features": doc["features"],}document_objects.append(Document(text=text_content, metadata=metadata))index = VectorStoreIndex([], storage_context=storage_context)for doc in document_objects:index.insert(doc)

LLM 設置

定義將作為 reranker 的 LLM:

Settings.llm = OpenAI(temperature=0, model="gpt-4.1-mini")
Settings.chunk_size = 512

Rerank 功能

我們現在創建一個函數,該函數先執行 retriever 從向量索引中獲取與用戶問題最相似的文檔,然后在此基礎上應用 RankGPTRerank 進行 rerank,最后返回重新排序后的文檔。

def get_retrieved_nodes(query_str, vector_top_k=10, reranker_top_n=5, with_reranker=False
):query_bundle = QueryBundle(query_str)# configure retrieverretriever = VectorIndexRetriever(index=index,similarity_top_k=vector_top_k,)retrieved_nodes = retriever.retrieve(query_bundle)if with_reranker:# configure rerankerreranker = RankGPTRerank(llm=OpenAI(model="gpt-4.1-mini",temperature=0.0,api_key=os.environ["OPENAI_API_KEY"],),top_n=reranker_top_n,verbose=True,)retrieved_nodes = reranker.postprocess_nodes(retrieved_nodes, query_bundle)return retrieved_nodes

我們還創建了一個函數來格式化結果文檔。

def visualize_retrieved_nodes(nodes):formatted_results = []for node in nodes:text = node.node.get_text()product_name = text.split("Product Name:")[1].split("\n")[0].strip()price = text.split("Price:")[1].split("\n")[0].strip()reviews = text.split("Reviews:")[1].split("\n")[0].strip()features = text.split("Features:")[1].strip()formatted_result = f"{price} - {product_name} ({reviews}) {features}"formatted_results.append(formatted_result)return formatted_results

不使用 rerank

我們先運行不帶 rerank 的請求。

new_nodes = get_retrieved_nodes(query_str=user_query,vector_top_k=5,with_reranker=False,
)results = visualize_retrieved_nodes(new_nodes)print("\nTop 5 results without rerank:")
for idx, result in enumerate(results, start=1):print(f"{idx}. {result}")

答案:

Top 5 results without rerank:
1. $2499.99 - Razer Blade 15 (4.6 stars) Intel Core i7, RTX 4060, 16GB RAM, 1TB SSD, 240Hz Display
2. $1899.99 - ASUS ROG Strix G16 (4.7 stars) Intel Core i9, RTX 4070, 16GB RAM, 512GB SSD, 165Hz Display
3. $1999.99 - Gigabyte AORUS 17 (4.6 stars) Intel Core i9, RTX 4070, 16GB RAM, 1TB SSD, 360Hz Display
4. $2799.99 - MSI Stealth 17 (4.8 stars) Intel Core i9, RTX 4080, 32GB RAM, 1TB SSD, 4K Display
5. $2999.99 - Alienware m18 (4.8 stars) Intel Core i9, RTX 4090, 32GB RAM, 2TB SSD, 480Hz Display

使用 rerank

現在我們啟用 rerank,它將執行相同的向量搜索,然后使用 LLM 對結果進行 rerank,應用 “Best laptops for gaming” 標準對前 5 個結果進行排序。我們可以看到細微差別,比如 Intel Core i7 處理器被排到最后,而 Alienware m18 升到了第 2 位。

new_nodes = get_retrieved_nodes(user_query,vector_top_k=5,reranker_top_n=5,with_reranker=True,
)results = visualize_retrieved_nodes(new_nodes)print("\nTop 5 results with reranking:")
for idx, result in enumerate(results, start=1):print(f"{idx}. {result}")

答案:

Top 5 results with reranking:
1. $1899.99 - ASUS ROG Strix G16 (4.7 stars) Intel Core i9, RTX 4070, 16GB RAM, 512GB SSD, 165Hz Display
2. $2999.99 - Alienware m18 (4.8 stars) Intel Core i9, RTX 4090, 32GB RAM, 2TB SSD, 480Hz Display
3. $2799.99 - MSI Stealth 17 (4.8 stars) Intel Core i9, RTX 4080, 32GB RAM, 1TB SSD, 4K Display
4. $1999.99 - Gigabyte AORUS 17 (4.6 stars) Intel Core i9, RTX 4070, 16GB RAM, 1TB SSD, 360Hz Display
5. $2499.99 - Razer Blade 15 (4.6 stars) Intel Core i7, RTX 4060, 16GB RAM, 1TB SSD, 240Hz Display

Elasticsearch 語義 rerank

推理 rerank 端點

創建一個推理端點,可以獨立調用它來根據查詢對候選列表進行 rerank,或作為 retriever 的一部分使用:

INFERENCE_RERANK_NAME = "my-elastic-rerank"try:_client.options(request_timeout=60, max_retries=3, retry_on_timeout=True).inference.put(task_type="rerank",inference_id=INFERENCE_RERANK_NAME,body={"service": "elasticsearch","service_settings": {"model_id": ".rerank-v1","num_threads": 1,"adaptive_allocations": {"enabled": True,"min_number_of_allocations": 1,"max_number_of_allocations": 4,},},},)print("Inference endpoint created successfully.")except Exception as e:print(f"Error creating inference endpoint: {e.info['error']['root_cause'][0]['reason'] }")

我們定義一個函數來執行搜索查詢,然后解析返回的命中結果。

async def es_search(query):response = _client.search(index=INDEX_NAME, body=query)hits = response["hits"]["hits"]if not hits:return ""return hits

與 LlamaIndex 一樣,我們創建一個函數來格式化結果文檔。

def format_es_results(hits):formatted_results = []for hit in hits:metadata = hit["_source"]["metadata"]name = metadata.get("name")price = metadata.get("price")reviews = metadata.get("reviews")features = metadata.get("features")formatted_result = f"{price} - {name} ({reviews}) {features}"formatted_results.append(formatted_result)return formatted_results

語義查詢

我們將從語義查詢開始,返回與用戶問題最相似的結果。

semantic_results = await es_search({"size": 5,"query": {"semantic": {"field": "semantic_field","query": user_query,}},"_source": {"includes": ["metadata",]},}
)semantic_formatted_results = format_es_results(semantic_results)print("Query results:")
for idx, result in enumerate(semantic_formatted_results, start=1):print(f"{idx}. {result}")

查詢結果:

1. 2999.99 - Alienware m18 (4.8) ['Intel Core i9', 'RTX 4090', '32GB RAM', '2TB SSD', '480Hz Display']
2. 2799.99 - MSI Stealth 17 (4.8) ['Intel Core i9', 'RTX 4080', '32GB RAM', '1TB SSD', '4K Display']
3. 1599.99 - HP Omen 16 (4.4) ['AMD Ryzen 7', 'RTX 3060', '16GB RAM', '512GB SSD', '165Hz Display']
4. 1399.99 - Acer Predator Helios 300 (4.5) ['Intel Core i7', 'RTX 3060', '16GB RAM', '512GB SSD', '144Hz Display']
5. 1999.99 - Gigabyte AORUS 17 (4.6) ['Intel Core i9', 'RTX 4070', '16GB RAM', '1TB SSD', '360Hz Display']
rerank_results = await es_search({"size": 5,"_source": {"includes": ["metadata",]},"retriever": {"text_similarity_reranker": {"retriever": {"standard": {"query": {"semantic": {"field": "semantic_field","query": user_query,}}}},"field": "semantic_field","inference_id": INFERENCE_RERANK_NAME,"inference_text": "reorder by quality-price ratio","rank_window_size": 5,}},}
)rerank_formatted_results = format_es_results(rerank_results)print("Query results:")
for idx, result in enumerate(rerank_formatted_results, start=1):print(f"{idx}. {result}")

查詢結果:

1. 1399.99 - Acer Predator Helios 300 (4.5) ['Intel Core i7', 'RTX 3060', '16GB RAM', '512GB SSD', '144Hz Display']2. 2999.99 - Alienware m18 (4.8) ['Intel Core i9', 'RTX 4090', '32GB RAM', '2TB SSD', '480Hz Display']3. 2799.99 - MSI Stealth 17 (4.8) ['Intel Core i9', 'RTX 4080', '32GB RAM', '1TB SSD', '4K Display']4. 1999.99 - Gigabyte AORUS 17 (4.6) ['Intel Core i9', 'RTX 4070', '16GB RAM', '1TB SSD', '360Hz Display']5. 1599.99 - HP Omen 16 (4.4) ['AMD Ryzen 7', 'RTX 3060', '16GB RAM', '512GB SSD', '165Hz Display']

在下表中,我們可以看到不同測試中的排名對比:

Laptop modelLlama (no rerank)Llama (with rerank)Elastic (no rerank)Elastic (with rerank)
Razer Blade 1515--
ASUS ROG Strix G1621--
Gigabyte AORUS 173454
MSI Stealth 174323
Alienware m185212
HP Omen 16--35
Acer Predator Helios 300--41

圖例:破折號(-)表示該方法的前五名中未出現該項。

它保持了一致性,將高端筆記本如 Alienware m18 和 MSI Stealth 17 保持在前列 —— 就像 LlamaIndex rerank 一樣 —— 同時實現了更好的性價比。

結論

Reranker 是提升搜索系統質量的強大工具,確保我們總能檢索到每個用戶問題中最重要的信息。

LlamaIndex 提供多種 reranker 策略,使用專門模型或 LLM。在最簡單的實現中,你可以創建內存中的向量存儲并本地保存文檔,然后進行檢索和 rerank,或者使用 Elasticsearch 作為持久化的向量存儲。

另一方面,Elasticsearch 提供開箱即用的推理端點框架,可以將 reranker 作為檢索管道的一部分或獨立端點使用。你還可以選擇 Elastic 自身、Cohere、Jina 或阿里巴巴等多種服務商,或部署任何兼容的第三方模型。在 Elasticsearch 的最簡單實現中,你的文檔和 rerank 模型都存儲在 Elasticsearch 集群中,便于擴展。

原文:LlamaIndex and Elasticsearch Rerankers: Unbeatable simplicity - Elasticsearch Labs

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

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

相關文章

服務器分布式的作用都有什么?

服務器分布式是通過網絡互聯的架構方式,將一個系統中的多臺服務器進行連接并協同工作,把一個服務器中的任務分發到不同的服務器節點上,以此來提高系統的性能、可靠性和可擴展性,下面,我們就來具體了解一下服務器分布式…

cocos打包web - ios設備息屏及前后臺切換音頻播放問題

切換前臺時,延遲暫停與恢復能解決大部分ios平臺前后臺切換后音頻無法恢復的問題; if (cc.sys.isBrowser && cc.sys.os cc.sys.OS_IOS && cc.sys.isMobile) {cc.game.on(cc.game.EVENT_GAME_INITED, () > {cc.game.on(cc.game.EVENT_…

期貨Level2五檔委托簿0.25秒高頻分鐘與日級歷史行情數據解析

在金融數據分析領域,本地CSV格式的期貨數據為研究人員和交易者提供了豐富的原始信息。本文將介紹如何有效利用不同類型的期貨數據,包括分鐘數據、高頻Tick、五檔Level2等,并闡述數據處理與分析方法。一、數據概述期貨分鐘數據通常包含時間戳、…

原生html+js+jq+less 實現時間區間下拉彈窗選擇器

html彈窗<div class"popupForm" id"popupForm10"><div class"pop-box"><i class"iconfont icon-quxiao cancel" onclick"toggleForm(10)"></i><div class"title">選擇時間</div…

基于邏輯回歸、隨機森林、梯度提升樹、XGBoost的廣告點擊預測模型的研究實現

文章目錄有需要本項目的代碼或文檔以及全部資源&#xff0c;或者部署調試可以私信博主一、項目背景與目標二、數據概覽與預處理2.1 數據導入與初步分析2.2 缺失值與重復值處理2.3 目標變量分布三、探索性數據分析&#xff08;EDA&#xff09;3.1 數值變量分布3.2 類別變量分布3…

Docker學習相關視頻筆記(三)

參考視頻地址&#xff1a;40分鐘的Docker實戰攻略&#xff0c;一期視頻精通Docker。感謝作者的辛苦付出。 本文是Docker學習相關視頻筆記&#xff08;一&#xff09;與Docker學習相關視頻筆記&#xff08;二&#xff09;的后續 4、Docker命令 4.8 Docker 網絡 4.8.1 橋接模式…

RK3568筆記九十五:基于FFmpeg和Qt實現簡易視頻播放器

若該文為原創文章,轉載請注明原文出處。 一、開發環境 1、硬件:正點原子ATK-DLRK3568 2、QT: 5.14.2 3、系統: buildroot 二、實現功能 使用ffmpeg音視頻庫軟解碼實現視頻播放器 支持打開多種本地視頻文件(如mp4,mov,avi等) 視頻播放支持實時開始,暫停,繼續播放 采…

【LLM】Kimi-K2模型架構(MuonClip 優化器等)

note Kimi K2 的預訓練階段使用 MuonClip 優化器實現萬億參數模型的穩定高效訓練&#xff0c;在人類高質量數據成為瓶頸的背景下&#xff0c;有效提高 Token 利用效率。MuonClip Optimizer優化器&#xff0c;解決隨著scaling up時的不穩定性。Kimi-K2 與 DeepSeek-R1 架構對比…

Vue基礎(25)_組件與Vue的內置關系(原型鏈)

了解組件與Vue的內置關系前&#xff0c;我們需要回顧js原型鏈基礎知識&#xff1a;1、構造函數構造函數是一種特殊的方法&#xff0c;用于創建和初始化一個新的對象。它們是使用 new 關鍵字和函數調用來創建對象的。構造函數實際上只是一個普通的函數&#xff0c;通常以大寫字母…

kafka中生產者的數據分發策略

在 Kafka 中&#xff0c;生產者的數據分發策略決定了消息如何分配到主題的不同分區。在 Python 中&#xff0c;我們通常使用 kafka-python 庫來操作 Kafka&#xff0c;下面詳細講解其數據分發策略及實現代碼。一、Kafka 生產者數據分發核心概念分區&#xff08;Partition&#…

【動態規劃算法】斐波那契數列模型

一. (1137.)第N個泰波那契數(力扣)1.1動態規劃的算法流程 對于初學者來講學術上的概念晦澀難懂,將用通俗易懂的方式帶來感性的理解. 1.狀態表示dp表(一維或二維數組)里面的值所表示的含義 從哪獲取? 1.題目要求,如本題 2.題目沒有明確說明的情況下做題經驗的累積 3.分析問題的…

Odoo 18 PWA 全面掌握:從架構、實現到高級定制

本文旨在對 Odoo 18 中的漸進式網絡應用&#xff08;Progressive Web App, PWA&#xff09;技術進行一次全面而深入的剖析。本文的目標讀者為 Odoo 技術顧問、高級開發人員及解決方案架構師&#xff0c;旨在提供一份權威的技術參考&#xff0c;以指導 PWA 相關的實施項目與戰略…

Binary Classifier Optimization for Large Language Model Alignment

2025.acl-long.93.pdfhttps://aclanthology.org/2025.acl-long.93.pdf 1. 概述 在生產環境中部署大型語言模型(LLMs)時,對齊LLMs一直是一個關鍵因素,因為預訓練的LLMs容易產生不良輸出。Ouyang等人(2022)引入了基于人類反饋的強化學習(RLHF),該方法涉及基于單個提示的…

在CentOS上以源碼編譯的方式安裝PostgreSQL

下載目錄&#xff1a;PostgreSQL: File Browser&#xff0c;我使用的PostgreSQLv17.5。Linux系統&#xff1a;CentOS Linux release 7.9.2009 (Core) 安裝依賴包和工具鏈&#xff08;必須且重要&#xff01;&#xff09; yum groupinstall "Development Tools" -y yu…

Baumer工業相機堡盟工業相機如何通過YoloV8深度學習模型實現沙灘小人檢測識別(C#代碼UI界面版)

Baumer工業相機堡盟工業相機如何通過YoloV8深度學習模型實現沙灘小人檢測識別&#xff08;C#代碼UI界面版&#xff09;工業相機使用YoloV8模型實現沙灘小人檢測識別工業相機通過YoloV8模型實現沙灘小人檢測識別的技術背景在相機SDK中獲取圖像轉換圖像的代碼分析工業相機圖像轉換…

Ubuntu服務器安裝與運維手冊——操作純享版

本手冊匯總了從硬件預配置、Ubuntu 安裝、網絡與服務配置&#xff0c;到 Windows/macOS 訪問共享、MySQL 初始化的完整流程&#xff0c;便于今后運維參考。 目錄 環境與硬件概覽BIOS/UEFI 設置制作與啟動安裝介質Ubuntu 24.04 LTS 安裝流程靜態 IP 配置&#xff08;netplan&am…

【Nginx】Nginx進階指南:解鎖代理與負載均衡的多樣玩法

在Web服務的世界里&#xff0c;Nginx就像是一位多面手&#xff0c;它不僅能作為高性能的Web服務器&#xff0c;還能輕松勝任代理服務器、負載均衡器等多種角色。今天&#xff0c;我們就來深入探索Nginx的幾個常見應用場景&#xff0c;通過實際案例和關鍵配置解析&#xff0c;帶…

原創-銳能微82xx系列電能計量芯片軟件驅動開發與精度校準流程完全指南

引言 電能計量芯片的軟件驅動開發是整個計量系統的核心&#xff0c;它直接決定了計量精度、系統穩定性和功能完整性。銳能微82xx系列電能計量芯片憑借其強大的數字信號處理能力和豐富的功能特性&#xff0c;為開發者提供了靈活的軟件開發平臺。本文將詳細介紹82xx系列芯片的軟…

如何使用 Apache Ignite 作為 Spring 框架的緩存(Spring Cache)后端

這份文檔是關于 如何使用 Apache Ignite 作為 Spring 框架的緩存&#xff08;Spring Cache&#xff09;后端&#xff0c;實現方法級別的緩存功能。 這和前面我們講的 Spring Data Ignite 是兩個不同的概念。我們先明確區別&#xff0c;再深入理解。&#x1f501; 一、核心區別…

Android 超大圖片、長圖分割加載

在Android開發中&#xff0c;處理大圖片的加載是一個常見且重要的問題&#xff0c;尤其是在需要顯示高分辨率圖片時。大圖片如果不正確處理&#xff0c;可能會導致內存溢出或應用性能下降。下面是一些常用的策略和技術來優化大圖片的加載&#xff1a;1. 使用圖片壓縮庫a. Glide…