使用 OpenAI 的对话式搜索
本教程向您展示如何使用 OpenAI gpt-4o
模型配置基于检索增强生成 (RAG) 的会话式搜索。有关更多信息,请参阅会话式搜索。
将以 your_
为前缀的占位符替换为您自己的值。
另外,您也可以使用代理和工具构建 RAG/对话式搜索。有关更多信息,请参阅检索增强生成聊天机器人。
先决条件
摄入测试数据
POST _bulk
{"index": {"_index": "qa_demo", "_id": "1"}}
{"text": "Chart and table of population level and growth rate for the Ogden-Layton metro area from 1950 to 2023. United Nations population projections are also included through the year 2035.\nThe current metro area population of Ogden-Layton in 2023 is 750,000, a 1.63% increase from 2022.\nThe metro area population of Ogden-Layton in 2022 was 738,000, a 1.79% increase from 2021.\nThe metro area population of Ogden-Layton in 2021 was 725,000, a 1.97% increase from 2020.\nThe metro area population of Ogden-Layton in 2020 was 711,000, a 2.16% increase from 2019."}
{"index": {"_index": "qa_demo", "_id": "2"}}
{"text": "Chart and table of population level and growth rate for the New York City metro area from 1950 to 2023. United Nations population projections are also included through the year 2035.\\nThe current metro area population of New York City in 2023 is 18,937,000, a 0.37% increase from 2022.\\nThe metro area population of New York City in 2022 was 18,867,000, a 0.23% increase from 2021.\\nThe metro area population of New York City in 2021 was 18,823,000, a 0.1% increase from 2020.\\nThe metro area population of New York City in 2020 was 18,804,000, a 0.01% decline from 2019."}
{"index": {"_index": "qa_demo", "_id": "3"}}
{"text": "Chart and table of population level and growth rate for the Chicago metro area from 1950 to 2023. United Nations population projections are also included through the year 2035.\\nThe current metro area population of Chicago in 2023 is 8,937,000, a 0.4% increase from 2022.\\nThe metro area population of Chicago in 2022 was 8,901,000, a 0.27% increase from 2021.\\nThe metro area population of Chicago in 2021 was 8,877,000, a 0.14% increase from 2020.\\nThe metro area population of Chicago in 2020 was 8,865,000, a 0.03% increase from 2019."}
{"index": {"_index": "qa_demo", "_id": "4"}}
{"text": "Chart and table of population level and growth rate for the Miami metro area from 1950 to 2023. United Nations population projections are also included through the year 2035.\\nThe current metro area population of Miami in 2023 is 6,265,000, a 0.8% increase from 2022.\\nThe metro area population of Miami in 2022 was 6,215,000, a 0.78% increase from 2021.\\nThe metro area population of Miami in 2021 was 6,167,000, a 0.74% increase from 2020.\\nThe metro area population of Miami in 2020 was 6,122,000, a 0.71% increase from 2019."}
{"index": {"_index": "qa_demo", "_id": "5"}}
{"text": "Chart and table of population level and growth rate for the Austin metro area from 1950 to 2023. United Nations population projections are also included through the year 2035.\\nThe current metro area population of Austin in 2023 is 2,228,000, a 2.39% increase from 2022.\\nThe metro area population of Austin in 2022 was 2,176,000, a 2.79% increase from 2021.\\nThe metro area population of Austin in 2021 was 2,117,000, a 3.12% increase from 2020.\\nThe metro area population of Austin in 2020 was 2,053,000, a 3.43% increase from 2019."}
{"index": {"_index": "qa_demo", "_id": "6"}}
{"text": "Chart and table of population level and growth rate for the Seattle metro area from 1950 to 2023. United Nations population projections are also included through the year 2035.\\nThe current metro area population of Seattle in 2023 is 3,519,000, a 0.86% increase from 2022.\\nThe metro area population of Seattle in 2022 was 3,489,000, a 0.81% increase from 2021.\\nThe metro area population of Seattle in 2021 was 3,461,000, a 0.82% increase from 2020.\\nThe metro area population of Seattle in 2020 was 3,433,000, a 0.79% increase from 2019."}
步骤 1:创建连接器并注册模型
首先,为 OpenAI gpt-4o
模型创建连接器
POST _plugins/_ml/connectors/_create
{
"name": "OpenAI GPT-4o",
"description": "Connector of OpenAI GPT-4o",
"version": "1.0",
"protocol": "http",
"parameters": {
"endpoint": "api.openai.com",
"model": "gpt-4o"
},
"credential": {
"openAI_key": "your_openai_key"
},
"actions": [
{
"action_type": "predict",
"method": "POST",
"url": "https://${parameters.endpoint}/v1/chat/completions",
"headers": {
"Authorization": "Bearer ${credential.openAI_key}"
},
"request_body": "{ \"model\": \"${parameters.model}\", \"messages\": ${parameters.messages} }"
}
]
}
有关更多信息,请参阅此蓝图。
记下连接器 ID;您将使用它来注册模型。
接下来,注册模型
POST /_plugins/_ml/models/_register?deploy=true
{
"name": "OpenAI GPT-4o model",
"function_name": "remote",
"description": "OpenAI GPT-4o model",
"connector_id": "your_connector_id"
}
记下模型 ID;您将在后续步骤中使用它。
测试模型
POST /_plugins/_ml/models/your_model_id/_predict
{
"parameters": {
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "Who won the world series in 2020?"
}
]
}
}
响应包含模型生成的文本
{
"inference_results": [
{
"output": [
{
"name": "response",
"dataAsMap": {
"id": "chatcmpl-A9Rtgkyk4PVlLil2u4JRUH2oXb25v",
"object": "chat.completion",
"created": 1.726815552E9,
"model": "gpt-4o-2024-05-13",
"choices": [
{
"index": 0.0,
"message": {
"role": "assistant",
"content": "The Los Angeles Dodgers won the World Series in 2020. They defeated the Tampa Bay Rays in six games to secure their first championship since 1988.",
"refusal": null
},
"logprobs": null,
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 27.0,
"completion_tokens": 32.0,
"total_tokens": 59.0,
"completion_tokens_details": {
"reasoning_tokens": 0.0
}
},
"system_fingerprint": "fp_52a7f40b0b"
}
}
],
"status_code": 200
}
]
}
步骤 2:配置 RAG
要配置 RAG,请创建包含 RAG 处理器的搜索管道
PUT /_search/pipeline/my-conversation-search-pipeline-openai
{
"response_processors": [
{
"retrieval_augmented_generation": {
"tag": "Demo pipeline",
"description": "Demo pipeline Using Cohere",
"model_id": "your_model_id_created_in_step1",
"context_field_list": [
"text"
],
"system_prompt": "You are a helpful assistant",
"user_instructions": "Generate a concise and informative answer in less than 100 words for the given question"
}
}
]
}
运行不存储会话历史记录的基本 RAG 搜索
GET /qa_demo/_search?search_pipeline=my-conversation-search-pipeline-openai
{
"query": {
"match": {
"text": "What's the population increase of New York City from 2021 to 2023?"
}
},
"size": 1,
"_source": [
"text"
],
"ext": {
"generative_qa_parameters": {
"llm_model": "gpt-4o",
"llm_question": "What's the population increase of New York City from 2021 to 2023?",
"context_size": 5,
"timeout": 15
}
}
}
响应包含模型答案和相关文档
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 6,
"relation": "eq"
},
"max_score": 9.042081,
"hits": [
{
"_index": "qa_demo",
"_id": "2",
"_score": 9.042081,
"_source": {
"text": "Chart and table of population level and growth rate for the New York City metro area from 1950 to 2023. United Nations population projections are also included through the year 2035.\\nThe current metro area population of New York City in 2023 is 18,937,000, a 0.37% increase from 2022.\\nThe metro area population of New York City in 2022 was 18,867,000, a 0.23% increase from 2021.\\nThe metro area population of New York City in 2021 was 18,823,000, a 0.1% increase from 2020.\\nThe metro area population of New York City in 2020 was 18,804,000, a 0.01% decline from 2019."
}
}
]
},
"ext": {
"retrieval_augmented_generation": {
"answer": "The population of the New York City metro area increased by 114,000 from 2021 to 2023, rising from 18,823,000 in 2021 to 18,937,000 in 2023."
}
}
}
步骤 3:配置会话式搜索
按照以下步骤配置会话式搜索,将对话历史记录存储在内存中。
-
创建内存
POST /_plugins/_ml/memory/ { "name": "Conversation about NYC population" }
响应包含内存 ID
{ "memory_id": "rBAbY5UBSzdNxlHvIyI3" }
-
要保存对话历史记录,请在搜索请求中包含内存 ID
GET /qa_demo/_search?search_pipeline=my-conversation-search-pipeline-openai { "query": { "match": { "text": "What's the population increase of New York City from 2021 to 2023?" } }, "size": 1, "_source": [ "text" ], "ext": { "generative_qa_parameters": { "llm_model": "gpt-4o", "llm_question": "What's the population increase of New York City from 2021 to 2023?", "context_size": 5, "timeout": 15, "memory_id": "rBAbY5UBSzdNxlHvIyI3" } } }
响应包含模型答案和相关文档
{ "took": 1, "timed_out": false, "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 6, "relation": "eq" }, "max_score": 9.042081, "hits": [ { "_index": "qa_demo", "_id": "2", "_score": 9.042081, "_source": { "text": "Chart and table of population level and growth rate for the New York City metro area from 1950 to 2023. United Nations population projections are also included through the year 2035.\\nThe current metro area population of New York City in 2023 is 18,937,000, a 0.37% increase from 2022.\\nThe metro area population of New York City in 2022 was 18,867,000, a 0.23% increase from 2021.\\nThe metro area population of New York City in 2021 was 18,823,000, a 0.1% increase from 2020.\\nThe metro area population of New York City in 2020 was 18,804,000, a 0.01% decline from 2019." } } ] }, "ext": { "retrieval_augmented_generation": { "answer": "The population of the New York City metro area increased from 18,823,000 in 2021 to 18,937,000 in 2023. This represents an increase of 114,000 people over the two-year period.", "message_id": "rRAcY5UBSzdNxlHvyiI1" } } }
-
要继续对话,请在下一次搜索中提供相同的内存 ID
GET /qa_demo/_search?search_pipeline=my-conversation-search-pipeline-openai { "query": { "match": { "text": "What's the population increase of Miami from 2021 to 2023?" } }, "size": 1, "_source": [ "text" ], "ext": { "generative_qa_parameters": { "llm_model": "gpt-4o", "llm_question": "compare population increase of New York City and Miami", "context_size": 5, "timeout": 15, "memory_id": "rBAbY5UBSzdNxlHvIyI3" } } }
模型使用内存中的对话历史记录,将迈阿密的人口数据与之前讨论过的纽约市统计数据进行比较
{ "took": 1, "timed_out": false, "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 6, "relation": "eq" }, "max_score": 3.6660428, "hits": [ { "_index": "qa_demo", "_id": "4", "_score": 3.6660428, "_source": { "text": "Chart and table of population level and growth rate for the Miami metro area from 1950 to 2023. United Nations population projections are also included through the year 2035.\\nThe current metro area population of Miami in 2023 is 6,265,000, a 0.8% increase from 2022.\\nThe metro area population of Miami in 2022 was 6,215,000, a 0.78% increase from 2021.\\nThe metro area population of Miami in 2021 was 6,167,000, a 0.74% increase from 2020.\\nThe metro area population of Miami in 2020 was 6,122,000, a 0.71% increase from 2019." } } ] }, "ext": { "retrieval_augmented_generation": { "answer": "From 2021 to 2023, the New York City metro area increased by 114,000 people, while the Miami metro area grew by 98,000 people. This means New York City saw a slightly larger population increase compared to Miami over the same period.", "message_id": "rhAdY5UBSzdNxlHv5SKa" } } }