向量存储的概念指南向量存储是专门设计的数据库,用于通过向量表示(嵌入)来索引和检索信息。
它们通常用于通过识别语义相似的内容而非依赖精确的关键词匹配,来搜索非结构化数据,如文本、图像和音频。
为什么向量存储至关重要
快速高效的搜索
通过正确存储和索引嵌入向量,向量存储能够快速检索相关信息,即使在处理海量数据集时也能高效工作。
应对数据增长的可扩展性
随着数据不断扩展,向量存储必须能够高...
VectorStore-backed Retriever基于VectorStore的检索器 是一种文档检索系统,它利用向量存储根据文档的向量表示来进行搜索。这种方法使得基于相似度的搜索变得高效,特别适用于处理非结构化数据。
RAG系统中的文档搜索和响应生成步骤包括:
文档加载:导入原始文档。
文本切分:将文本切分成可管理的块。
向量嵌入:使用嵌入模型将文本转换为数值向量。
存储到向量数据库...
VLLM 部署本地大模型
单卡部署
12345678910111213export CUDA_VISIBLE_DEVICES=5modelpath=../DataCollection/officials/Qwen2.5-7B-Instructmodelname=Qwen2.5-7B-Instructnohup python -m vllm.entrypoints.openai.api_se...
Document用于存储一段文本及其相关元数据的类。
page_content (必需):以字符串形式存储一段文本。
metadata (可选):以字典形式存储与 page_content 相关的元数据。
12345from langchain_core.documents import Documentdocument = Document(page_content="Hell...
Character Text SplitterCharacterTextSplitter 提供了高效的文本切分功能,带来了以下几个关键优势:
Token 限制: 克服了 LLM 上下文窗口大小的限制。
搜索优化: 实现更精确的基于块的检索。
内存效率: 有效处理大规模文档。
上下文保持: 通过 chunk_overlap 保持文本的连贯性。
CharacterTextSplitter 是...
Prompt TemplatePrompt 模板对于生成动态且灵活的提示至关重要,可用于各种场景,例如会话历史记录、结构化输出和特定查询。
在本教程中,我们将探讨创建 PromptTemplate 对象的方法,应用部分变量,通过 YAML 文件管理模板,并利用 ChatPromptTemplate 和 MessagePlaceholder 等高级工具来增强功能。
12345678from...
Prompt TemplatePrompt 模板对于生成动态且灵活的提示至关重要,可用于各种场景,例如会话历史记录、结构化输出和特定查询。
在本教程中,我们将探讨创建 PromptTemplate 对象的方法,应用部分变量,通过 YAML 文件管理模板,并利用 ChatPromptTemplate 和 MessagePlaceholder 等高级工具来增强功能。
12345678from...
初始化大模型接口并调用一般都是用ChatOpenAI这个类,以下两个方式引用都可以:
from langchain_openai.chat_models import ChatOpenAI
from langchain_openai import ChatOpenAI
这是对话的重要参数,关键的是model.Key init args — completion params:
mode...
前言之前遇到一个问题,公司大模型的长度不长,而且业务需要RAG返回不少的相关内容。通常RAG都是取top-10/15,文档由于长度限制不能太多,加上embedding效果不佳,返回的文档不多也不能保证都相关。
我们考虑到返回的文档中真正能被用于求解的文本可能只占总文本的一部分,其他无关部分只会影响大模型,而且会占用上下文长度。
因此我们对RAG文档进行问题相关的总计/query-focuse...
我试过用map-refine方法来精炼上下文,由于它是线性的,运行时间随着文档数量线性增长。所以可以考虑通过判断上下文是否可以满足QA来提前结束过程。
1234567891011121314151617import osimport jsonfrom langchain_core.documents import Documentdata = []file_path = './data/da...