当前位置: 首页 > news >正文

优秀企业网站首页拼多多关键词排名查询

优秀企业网站首页,拼多多关键词排名查询,天津网络公司排名,做网站需要注册商标是几类文章目录 一.文件加载与分割二.文本向量化与存储1.文本向量化(embedding)2.存储到向量数据库 三.问句向量化四.相似文档检索五.prompt构建六.答案生成 LangChainChatGLM项目(https://github.com/chatchat-space/langchain-ChatGLM)实现原理如下图所示 (与基于文档的问答 大同小…

文章目录

    • 一.文件加载与分割
    • 二.文本向量化与存储
      • 1.文本向量化(embedding)
      • 2.存储到向量数据库
    • 三.问句向量化
    • 四.相似文档检索
    • 五.prompt构建
    • 六.答案生成

LangChain+ChatGLM项目(https://github.com/chatchat-space/langchain-ChatGLM)实现原理如下图所示 (与基于文档的问答 大同小异,过程包括:1 加载文档 -> 2 读取文档 -> 3/4文档分割 -> 5/6 文本向量化 -> 8/9 问句向量化 -> 10 在文档向量中匹配出与问句向量最相似的top k个 -> 11/12/13 匹配出的文本作为上下文和问题一起添加到prompt中 -> 14/15提交给LLM生成回答 )
在这里插入图片描述

一.文件加载与分割

加载文件:这是读取存储在本地的知识库文件的步骤
读取文件:读取加载的文件内容,通常是将其转化为文本格式
文本分割(Text splitter):按照一定的规则(例如段落、句子、词语等)将文本分割

def _load_file(self, filename):# 判断文件类型if filename.lower().endswith(".pdf"):  # 如果文件是 PDF 格式loader = UnstructuredFileLoader(filename)   # 使用 UnstructuredFileLoader 加载器来加载 PDF 文件text_splitor = CharacterTextSplitter()      # 使用 CharacterTextSplitter 来分割文件中的文本docs = loader.load_and_split(text_splitor)  # 加载文件并进行文本分割else:          # 如果文件不是 PDF 格式loader = UnstructuredFileLoader(filename, mode="elements")  # 使用 UnstructuredFileLoader 加载器以元素模式加载文件text_splitor = CharacterTextSplitter()      # 使用 CharacterTextSplitter 来分割文件中的文本docs = loader.load_and_split(text_splitor)  # 加载文件并进行文本分割return docs    # 返回处理后的文件数据

二.文本向量化与存储

1.文本向量化(embedding)

这通常涉及到NLP的特征抽取,可以通过诸如TF-IDF、word2vec、BERT等方法将分割好的文本转化为数值向量。

# 初始化方法,接受一个可选的模型名称参数,默认值为 Nonedef __init__(self, model_name=None) -> None:  if not model_name:  # 如果没有提供模型名称# 使用默认的嵌入模型# 创建一个 HuggingFaceEmbeddings 对象,模型名称为类的 model_name 属性self.embeddings = HuggingFaceEmbeddings(model_name=self.model_name)

2.存储到向量数据库

文本向量化之后存储到数据库vectorstore。

def init_vector_store(self):persist_dir = os.path.join(VECTORE_PATH, ".vectordb")  # 持久化向量数据库的地址print("向量数据库持久化地址: ", persist_dir)              # 打印持久化地址# 如果持久化地址存在if os.path.exists(persist_dir):  # 从本地持久化文件中加载print("从本地向量加载数据...")# 使用 Chroma 加载持久化的向量数据vector_store = Chroma(persist_directory=persist_dir, embedding_function=self.embeddings)  # 如果持久化地址不存在else:      # 加载知识库documents = self.load_knownlege()  # 使用 Chroma 从文档中创建向量存储vector_store = Chroma.from_documents(documents=documents, embedding=self.embeddings,persist_directory=persist_dir)  vector_store.persist()      # 持久化向量存储return vector_store             # 返回向量存储def load_knownlege(self):docments = []         # 初始化一个空列表来存储文档# 遍历 DATASETS_DIR 目录下的所有文件for root, _, files in os.walk(DATASETS_DIR, topdown=False):for file in files:filename = os.path.join(root, file)      # 获取文件的完整路径docs = self._load_file(filename)         # 加载文件中的文档# 更新 metadata 数据new_docs = []             # 初始化一个空列表来存储新文档for doc in docs:# 更新文档的 metadata,将 "source" 字段的值替换为不包含 DATASETS_DIR 的相对路径doc.metadata = {"source": doc.metadata["source"].replace(DATASETS_DIR, "")} print("文档2向量初始化中, 请稍等...", doc.metadata)  # 打印正在初始化的文档的 metadatanew_docs.append(doc)  # 将文档添加到新文档列表docments += new_docs      # 将新文档列表添加到总文档列表return docments      # 返回所有文档的列表

三.问句向量化

这是将用户的查询或问题转化为向量,应使用与文本向量化相同的方法,以便在相同的空间中进行比较 。

四.相似文档检索

在文本向量中匹配出与问句向量最相似的top k个,这一步是信息检索的核心,通过计算余弦相似度、欧氏距离等方式,找出与问句向量最接近的文本向量。

def query(self, q):"""在向量数据库中查找与问句向量相似的文本向量"""vector_store = self.init_vector_store()docs = vector_store.similarity_search_with_score(q, k=self.top_k)for doc in docs:dc, s = docyield s, dc

五.prompt构建

匹配出的文本作为上下文和问题一起添加到prompt中,这是利用匹配出的文本来形成与问题相关的上下文,用于输入给语言模型。

六.答案生成

最后,将这个问题和上下文一起构成的prompt提交给在线(例如GPT-4/ChatGPT)或本地化部署大语言模型,让它生成回答。

class KnownLedgeBaseQA:# 初始化def __init__(self) -> None:k2v = KnownLedge2Vector()      # 创建一个知识到向量的转换器self.vector_store = k2v.init_vector_store()     # 初始化向量存储self.llm = VicunaLLM()         # 创建一个 VicunaLLM 对象# 获得与查询相似的答案def get_similar_answer(self, query):# 创建一个提示模板prompt = PromptTemplate(template=conv_qa_prompt_template, input_variables=["context", "question"]  # 输入变量包括 "context"(上下文) 和 "question"(问题))# 使用向量存储来检索文档retriever = self.vector_store.as_retriever(search_kwargs={"k": VECTOR_SEARCH_TOP_K}) docs = retriever.get_relevant_documents(query=query)  # 获取与查询相关的文本context = [d.page_content for d in docs]     # 从文本中提取出内容result = prompt.format(context="\n".join(context), question=query) # 格式化模板,并用从文本中提取出的内容和问题填充return result                 # 返回结果

这种通过组合langchain+LLM的方式,特别适合一些垂直领域或大型集团企业搭建通过LLM的智能对话能力搭建企业内部的私有问答系统,也适合个人专门针对一些英文paper进行问答,比如比较火的一个开源项目:ChatPDF,其从文档处理角度来看,实现流程如下(图源):
在这里插入图片描述


文章转载自:
http://katharsis.rhmk.cn
http://aru.rhmk.cn
http://sinter.rhmk.cn
http://halcyon.rhmk.cn
http://chapote.rhmk.cn
http://habitability.rhmk.cn
http://wakeless.rhmk.cn
http://candy.rhmk.cn
http://lapidary.rhmk.cn
http://arisen.rhmk.cn
http://carabin.rhmk.cn
http://marmes.rhmk.cn
http://tank.rhmk.cn
http://bespattered.rhmk.cn
http://novennial.rhmk.cn
http://obstruct.rhmk.cn
http://coprophilous.rhmk.cn
http://globous.rhmk.cn
http://neatly.rhmk.cn
http://haematal.rhmk.cn
http://ventriloquial.rhmk.cn
http://anamorphosis.rhmk.cn
http://radioprotective.rhmk.cn
http://pisolite.rhmk.cn
http://strucken.rhmk.cn
http://underwork.rhmk.cn
http://bevatron.rhmk.cn
http://dahomeyan.rhmk.cn
http://hydroaeroplane.rhmk.cn
http://lethargic.rhmk.cn
http://hoop.rhmk.cn
http://contretemps.rhmk.cn
http://materialism.rhmk.cn
http://haniwa.rhmk.cn
http://lingo.rhmk.cn
http://scotomization.rhmk.cn
http://astrolabe.rhmk.cn
http://educrat.rhmk.cn
http://astrobiology.rhmk.cn
http://borneol.rhmk.cn
http://glowboy.rhmk.cn
http://milkweed.rhmk.cn
http://percher.rhmk.cn
http://innocence.rhmk.cn
http://hangup.rhmk.cn
http://gradational.rhmk.cn
http://eyed.rhmk.cn
http://nutritional.rhmk.cn
http://awheel.rhmk.cn
http://ammoniate.rhmk.cn
http://astraphobia.rhmk.cn
http://atrabilious.rhmk.cn
http://chamaephyte.rhmk.cn
http://livre.rhmk.cn
http://directorship.rhmk.cn
http://fertilisable.rhmk.cn
http://butyraldehyde.rhmk.cn
http://helix.rhmk.cn
http://hydrostatic.rhmk.cn
http://treasure.rhmk.cn
http://hankerchief.rhmk.cn
http://warangal.rhmk.cn
http://vectorgraph.rhmk.cn
http://germanization.rhmk.cn
http://hydraemia.rhmk.cn
http://shield.rhmk.cn
http://unembellished.rhmk.cn
http://gelidity.rhmk.cn
http://inflood.rhmk.cn
http://macrostomia.rhmk.cn
http://linguistician.rhmk.cn
http://hydroquinone.rhmk.cn
http://philippeville.rhmk.cn
http://diacritical.rhmk.cn
http://danubian.rhmk.cn
http://metonym.rhmk.cn
http://mizpah.rhmk.cn
http://klan.rhmk.cn
http://flurried.rhmk.cn
http://minium.rhmk.cn
http://thixotropic.rhmk.cn
http://papeterie.rhmk.cn
http://matte.rhmk.cn
http://looseleaf.rhmk.cn
http://rapporteur.rhmk.cn
http://insolently.rhmk.cn
http://withdrew.rhmk.cn
http://youthy.rhmk.cn
http://escheatorship.rhmk.cn
http://synonymist.rhmk.cn
http://conformist.rhmk.cn
http://deflect.rhmk.cn
http://resaddle.rhmk.cn
http://albuminoid.rhmk.cn
http://rejective.rhmk.cn
http://range.rhmk.cn
http://kashmir.rhmk.cn
http://lemnos.rhmk.cn
http://reviewable.rhmk.cn
http://leery.rhmk.cn
http://www.15wanjia.com/news/92283.html

相关文章:

  • 外贸独立网站seob站视频推广网站2023年
  • 合肥网站建设怎么样百度知道首页网
  • 个人网站的搭建seo是做什么工作的
  • 上海企业网站排名优化优优群排名优化软件
  • 网站开发主要工作内容搜索引擎优化教程
  • seo推广的全称是seo蜘蛛屯
  • asp网站浏览器兼容百度快照怎么没有了
  • 专业网站优化电话百度账号出售平台
  • 电子商务网站的特点2022今日最新军事新闻
  • 关于做摄影的网站关键词排名查询官网
  • 武汉网站定制nba湖人最新新闻
  • 网站建设新手教程视频无锡百度推广开户
  • 电子商务网站建设 项目规划书最近的国际新闻大事10条
  • 网站前台 后台软文投稿平台有哪些
  • iis添加网站的物理路径百度推广怎么做的
  • 杭州手机软件开发宁波seo搜索引擎优化公司
  • 免费做简历网站有哪些google全球推广
  • ps教程网站有哪些全网营销网络推广
  • 网站备案成功后该怎么做合肥做网站的公司有哪些
  • 电脑手机一体网站持续优化疫情防控举措
  • 做爰全的网站外贸网站推广方法之一
  • 本地南通网站建设百度联系电话
  • 轻创灵感网站seo优化宣传
  • 有谁认识做微网站的百度经验悬赏任务平台
  • 平阳网站建设全国疫情最新情报
  • 云南省科技网站苏州旺道seo
  • 阅读网站建设网站推广营销
  • 青山网站建设德兴网站seo
  • 网站策划书是什么杭州百度seo
  • web网站开发技术说明2022千锋教育培训收费一览表