openai-redis-vectorstore


Nameopenai-redis-vectorstore JSON
Version 0.1.2 PyPI version JSON
download
home_pageNone
Summary基于RedisStack向量数据库,集成embeddings和rerank模型,支持二阶段召回,支持添加和删除等管理功能。
upload_time2024-12-25 14:23:20
maintainerrRR0VrFP
docs_urlNone
authorrRR0VrFP
requires_pythonNone
licenseApache License, Version 2.0
keywords openai-redis-vectorstore
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # openai-redis-vectorstore

基于RedisStack向量数据库,集成embeddings和rerank模型,支持二阶段召回,支持添加和删除等管理功能。

## 安装

```shell
pip install openai-redis-vectorstore
```

## 依赖说明

- 使用`python-environment-settings`管理配置项。详见该项目的参考文档。
- 深度依赖于`openai-simple-embeddings`和`openai-simple-rerank`。同时也依赖于两者的配置项。详见这两个项目的参考文档。

## 配置项说明

- REDIS_STACK_URL: redis-stack服务器地址。如:redis://localhost:6379/0
    - 有资料提到要使用redis-stack向量功能,必须是0号库(未测试)
    - (配置项别名)
    - REDIS_URL
    - REDIS

## 使用

### 将文本插入到向量数据库

*代码:*

```python
from openai_redis_vectorstore.base import RedisVectorStore

index_name = str(uuid.uuid4())
rvs = RedisVectorStore()
uid = rvs.insert("hello", meta={"id": 1}, index_name=index_name)
```

*说明:*

- id=1表示内容在业务系统中的唯一码。
- uid表示内容在向量数据库中的唯一码。可以根据uid唯一码,从向量数据库中删除相应内容。

### 搜索向量数据库

*代码:*

```python
from openai_redis_vectorstore.base import RedisVectorStore

index_name1 = str(uuid.uuid4())
index_name2 = str(uuid.uuid4())
rvs = RedisVectorStore()

# 向1号逻辑库中插入3条数据
rvs.insert_many(
    ["开会了", "再见", "你好"],
    metas=[
        {"id": 1},
        {"id": 2},
        {"id": 3},
    ],
    index_name=index_name1,
)

# 向2号逻辑库中插入3条数据
rvs.insert_many(
    ["开会去", "好的", "谢谢"],
    metas=[
        {"id": 1},
        {"id": 2},
        {"id": 3},
    ],
    index_name=index_name2,
)

# 从1号和2号逻辑库中搜索关键词并汇总
# 并要求匹配度不低于指定阈值
docs = rvs.similarity_search_and_rerank(
    query="开会",
    index_names=[index_name1, index_name2],
    embeddings_score_threshold=0.65,
    rerank_score_threshold=0.85,
)
assert len(docs) == 2
doc1 = docs[0]
doc2 = docs[1]
assert doc1.vs_index_name in [index_name1, index_name2]
assert doc2.vs_index_name in [index_name1, index_name2]
assert doc1.vs_rerank_score > doc2.vs_rerank_score
```

## 版本记录

### v0.1.0

- 版本首发。

### v0.1.1

- 修改:搜索一个空向量库时,只在日志中记录WARNING信息并返回空数组。

### v0.1.2

- 修改:`openai_redis_vectorstore.schemas.Document`增加`content`字段。

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "openai-redis-vectorstore",
    "maintainer": "rRR0VrFP",
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": "openai-redis-vectorstore",
    "author": "rRR0VrFP",
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/bf/5e/2658dff84327b1f6352ada48afa79c09921cf6c67343e219743f7d142e35/openai-redis-vectorstore-0.1.2.tar.gz",
    "platform": null,
    "description": "# openai-redis-vectorstore\r\n\r\n\u57fa\u4e8eRedisStack\u5411\u91cf\u6570\u636e\u5e93\uff0c\u96c6\u6210embeddings\u548crerank\u6a21\u578b\uff0c\u652f\u6301\u4e8c\u9636\u6bb5\u53ec\u56de\uff0c\u652f\u6301\u6dfb\u52a0\u548c\u5220\u9664\u7b49\u7ba1\u7406\u529f\u80fd\u3002\r\n\r\n## \u5b89\u88c5\r\n\r\n```shell\r\npip install openai-redis-vectorstore\r\n```\r\n\r\n## \u4f9d\u8d56\u8bf4\u660e\r\n\r\n- \u4f7f\u7528`python-environment-settings`\u7ba1\u7406\u914d\u7f6e\u9879\u3002\u8be6\u89c1\u8be5\u9879\u76ee\u7684\u53c2\u8003\u6587\u6863\u3002\r\n- \u6df1\u5ea6\u4f9d\u8d56\u4e8e`openai-simple-embeddings`\u548c`openai-simple-rerank`\u3002\u540c\u65f6\u4e5f\u4f9d\u8d56\u4e8e\u4e24\u8005\u7684\u914d\u7f6e\u9879\u3002\u8be6\u89c1\u8fd9\u4e24\u4e2a\u9879\u76ee\u7684\u53c2\u8003\u6587\u6863\u3002\r\n\r\n## \u914d\u7f6e\u9879\u8bf4\u660e\r\n\r\n- REDIS_STACK_URL: redis-stack\u670d\u52a1\u5668\u5730\u5740\u3002\u5982\uff1aredis://localhost:6379/0\r\n    - \u6709\u8d44\u6599\u63d0\u5230\u8981\u4f7f\u7528redis-stack\u5411\u91cf\u529f\u80fd\uff0c\u5fc5\u987b\u662f0\u53f7\u5e93\uff08\u672a\u6d4b\u8bd5\uff09\r\n    - \uff08\u914d\u7f6e\u9879\u522b\u540d\uff09\r\n    - REDIS_URL\r\n    - REDIS\r\n\r\n## \u4f7f\u7528\r\n\r\n### \u5c06\u6587\u672c\u63d2\u5165\u5230\u5411\u91cf\u6570\u636e\u5e93\r\n\r\n*\u4ee3\u7801\uff1a*\r\n\r\n```python\r\nfrom openai_redis_vectorstore.base import RedisVectorStore\r\n\r\nindex_name = str(uuid.uuid4())\r\nrvs = RedisVectorStore()\r\nuid = rvs.insert(\"hello\", meta={\"id\": 1}, index_name=index_name)\r\n```\r\n\r\n*\u8bf4\u660e\uff1a*\r\n\r\n- id=1\u8868\u793a\u5185\u5bb9\u5728\u4e1a\u52a1\u7cfb\u7edf\u4e2d\u7684\u552f\u4e00\u7801\u3002\r\n- uid\u8868\u793a\u5185\u5bb9\u5728\u5411\u91cf\u6570\u636e\u5e93\u4e2d\u7684\u552f\u4e00\u7801\u3002\u53ef\u4ee5\u6839\u636euid\u552f\u4e00\u7801\uff0c\u4ece\u5411\u91cf\u6570\u636e\u5e93\u4e2d\u5220\u9664\u76f8\u5e94\u5185\u5bb9\u3002\r\n\r\n### \u641c\u7d22\u5411\u91cf\u6570\u636e\u5e93\r\n\r\n*\u4ee3\u7801\uff1a*\r\n\r\n```python\r\nfrom openai_redis_vectorstore.base import RedisVectorStore\r\n\r\nindex_name1 = str(uuid.uuid4())\r\nindex_name2 = str(uuid.uuid4())\r\nrvs = RedisVectorStore()\r\n\r\n# \u54111\u53f7\u903b\u8f91\u5e93\u4e2d\u63d2\u51653\u6761\u6570\u636e\r\nrvs.insert_many(\r\n    [\"\u5f00\u4f1a\u4e86\", \"\u518d\u89c1\", \"\u4f60\u597d\"],\r\n    metas=[\r\n        {\"id\": 1},\r\n        {\"id\": 2},\r\n        {\"id\": 3},\r\n    ],\r\n    index_name=index_name1,\r\n)\r\n\r\n# \u54112\u53f7\u903b\u8f91\u5e93\u4e2d\u63d2\u51653\u6761\u6570\u636e\r\nrvs.insert_many(\r\n    [\"\u5f00\u4f1a\u53bb\", \"\u597d\u7684\", \"\u8c22\u8c22\"],\r\n    metas=[\r\n        {\"id\": 1},\r\n        {\"id\": 2},\r\n        {\"id\": 3},\r\n    ],\r\n    index_name=index_name2,\r\n)\r\n\r\n# \u4ece1\u53f7\u548c2\u53f7\u903b\u8f91\u5e93\u4e2d\u641c\u7d22\u5173\u952e\u8bcd\u5e76\u6c47\u603b\r\n# \u5e76\u8981\u6c42\u5339\u914d\u5ea6\u4e0d\u4f4e\u4e8e\u6307\u5b9a\u9608\u503c\r\ndocs = rvs.similarity_search_and_rerank(\r\n    query=\"\u5f00\u4f1a\",\r\n    index_names=[index_name1, index_name2],\r\n    embeddings_score_threshold=0.65,\r\n    rerank_score_threshold=0.85,\r\n)\r\nassert len(docs) == 2\r\ndoc1 = docs[0]\r\ndoc2 = docs[1]\r\nassert doc1.vs_index_name in [index_name1, index_name2]\r\nassert doc2.vs_index_name in [index_name1, index_name2]\r\nassert doc1.vs_rerank_score > doc2.vs_rerank_score\r\n```\r\n\r\n## \u7248\u672c\u8bb0\u5f55\r\n\r\n### v0.1.0\r\n\r\n- \u7248\u672c\u9996\u53d1\u3002\r\n\r\n### v0.1.1\r\n\r\n- \u4fee\u6539\uff1a\u641c\u7d22\u4e00\u4e2a\u7a7a\u5411\u91cf\u5e93\u65f6\uff0c\u53ea\u5728\u65e5\u5fd7\u4e2d\u8bb0\u5f55WARNING\u4fe1\u606f\u5e76\u8fd4\u56de\u7a7a\u6570\u7ec4\u3002\r\n\r\n### v0.1.2\r\n\r\n- \u4fee\u6539\uff1a`openai_redis_vectorstore.schemas.Document`\u589e\u52a0`content`\u5b57\u6bb5\u3002\r\n",
    "bugtrack_url": null,
    "license": "Apache License, Version 2.0",
    "summary": "\u57fa\u4e8eRedisStack\u5411\u91cf\u6570\u636e\u5e93\uff0c\u96c6\u6210embeddings\u548crerank\u6a21\u578b\uff0c\u652f\u6301\u4e8c\u9636\u6bb5\u53ec\u56de\uff0c\u652f\u6301\u6dfb\u52a0\u548c\u5220\u9664\u7b49\u7ba1\u7406\u529f\u80fd\u3002",
    "version": "0.1.2",
    "project_urls": null,
    "split_keywords": [
        "openai-redis-vectorstore"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d9fae07652d866c606a9280bc9cc95e077616dac76fb7c9271b56d9a101f9c58",
                "md5": "8a5b8d120e1c70f848e1ea4336bf4ca5",
                "sha256": "5bb93824c3ae46cc489f4af44c074014741b8d392af7e75e21f3b2076cca8bbf"
            },
            "downloads": -1,
            "filename": "openai_redis_vectorstore-0.1.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "8a5b8d120e1c70f848e1ea4336bf4ca5",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 12052,
            "upload_time": "2024-12-25T14:23:18",
            "upload_time_iso_8601": "2024-12-25T14:23:18.924820Z",
            "url": "https://files.pythonhosted.org/packages/d9/fa/e07652d866c606a9280bc9cc95e077616dac76fb7c9271b56d9a101f9c58/openai_redis_vectorstore-0.1.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "bf5e2658dff84327b1f6352ada48afa79c09921cf6c67343e219743f7d142e35",
                "md5": "396a91b81afdef57ec549f1876ae77b1",
                "sha256": "2def6b7ec09b65555fe5877ab5a6b2b80543dace965101d070cdac74bb47ab23"
            },
            "downloads": -1,
            "filename": "openai-redis-vectorstore-0.1.2.tar.gz",
            "has_sig": false,
            "md5_digest": "396a91b81afdef57ec549f1876ae77b1",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 12133,
            "upload_time": "2024-12-25T14:23:20",
            "upload_time_iso_8601": "2024-12-25T14:23:20.844692Z",
            "url": "https://files.pythonhosted.org/packages/bf/5e/2658dff84327b1f6352ada48afa79c09921cf6c67343e219743f7d142e35/openai-redis-vectorstore-0.1.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-12-25 14:23:20",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "openai-redis-vectorstore"
}
        
Elapsed time: 0.43442s