轻松创建基于语义搜索的LLM应用程序
项目描述
LangSearch: 轻松创建基于语义搜索的LLM应用程序
这是什么?
LangSearch是一个用于检索增强生成(RAG)的Python包,它有助于利用ChatGPT等大型语言模型(LLM)在非公开数据上的力量。与其他仅关注检索和生成的包不同,此包还负责数据发现(例如爬取)、数据持久化(更新数据时)和数据预处理。这意味着您可以快速开始实际用例,无需太多的配置。
此包站在巨人的肩膀上,并使用以下知名Python包和开源工具来完成繁重的工作。
- Scrapy用于爬取
- Apache Tika用于文本提取(支持超过1000种MIME类型)
- Mozilla Readability用于减少样板代码
- Inscriptis用于从HTML中提取文本
- OpenAI Whisper用于音频和视频转录
- Weaviate向量数据库用于语义搜索
- Langchain用于RAG
LangSearch可定制和可扩展。几乎每个方面都可以通过设置进行修改。它还支持设置自定义爬虫和自定义预处理器。
展示代码
例如,对LangChain文档进行RAG的代码非常简单。
crawler.py
from langsearch.spiders import WebSpider
class Crawler(WebSpider):
name = "langchain"
settings.py
from langsearch.pipelines import assemble, DetectItemTypePipeline, GenericHTMLPipeline
LANGSEARCH_WEB_SPIDER_START_URLS = ["https://python.langchain.ac.cn/docs/get_started/introduction"]
LANGSEARCH_WEB_SPIDER_LINK_EXTRACTOR_ALLOW = [
"https://python\.langchain\.com/docs/get_started",
"https://python\.langchain\.com/docs/modules",
"https://python\.langchain\.com/docs/guides",
"https://python\.langchain\.com/docs/ecosystem",
"https://python\.langchain\.com/docs/additional_resources"
]
AUTOTHROTTLE_ENABLED = True
ITEM_PIPELINES = {
DetectItemTypePipeline: 100,
**assemble(GenericHTMLPipeline)
}
在命令行中
>>> from langsearch.chains import QAChain
>>> chain_output = QAChain()({"question": "How can I install langchain?"})
>>> print(chain_output["output_text"])
To install LangChain, you can use either conda or pip.
If you prefer using conda, you can run the following command:
conda install langchain -c conda-forge
If you prefer using pip, there are two options depending on the modules you need.
To install the modules needed for the common LLM providers, you can run:
pip install langchain[llms]
To install all modules needed for all integrations, you can run:
pip install langchain[all]
Note that if you are using zsh, you'll need to quote square brackets when passing them as an argument to a command. For example:
pip install 'langchain[all]'
安装
pip install langsearch
文档
我们的文档(WIP)可以在 这里 找到。代码示例位于顶级 examples
文件夹中。
功能
- 自动和可定制的网站和本地数据发现(爬取)
- 支持包括html、pdf、docx、txt、png、mp3、mp4等超过1000种MIME类型。
- 包含电池的预处理数据管道
- 爬取数据持久化,以便您能够高效地与数据保持同步
- 使用
text2vec-transformers
模型(用于文本)和CLIP
模型进行图像嵌入。 - 简单的QA和HyDE等RAG方法
待办事项
- 改进文档
- 编写测试
- 制作CI管道以进行代码风格检查、构建和测试
- 在传入数据上微调语言模型
- 处理元数据并在检索中使用它
- 在开始爬取之前允许身份验证(登录)
- 支持PageRank + 向量相似度分数 + BM25组合
- Frontera集成?
- 设置GUI
- 图像中的重复检测
- QA中的集成方法
贡献
我们非常高兴从社区中获得贡献。请随意尝试此包,提交错误报告,提交拉取请求(即使是改进文档也大有帮助)。如果您需要任何帮助,请随时通过dibyachakravorty@gmail.com联系我。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
langsearch-0.1.9.tar.gz (18.5 kB 查看散列)
构建分发
langsearch-0.1.9-py2.py3-none-any.whl (37.3 kB 查看散列)
关闭
langsearch-0.1.9.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | d0c9d21ef227335d1a723afb39a03fde59a42bf6010b64c3b58660115ec2c01e |
|
MD5 | a0f1a11ca183c4d8bb69f844f90a055a |
|
BLAKE2b-256 | 03a37bdfbd9473f421f43dfa3bcc4f0f9dbb1bc64a467eb9655c79f68dd4c1a3 |
关闭
langsearch-0.1.9-py2.py3-none-any.whl的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | b686afacfc5b05cd0849d0dfd726b02c279852106f5ccde2563155c4d72ec829 |
|
MD5 | b81c8abdf7600ef8ae9cf8eb2a77392c |
|
BLAKE2b-256 | 3e4d798eb8e3bbf93a9c19ff04f194a41278a65e240d2a1df7435e139fa75f22 |