21
21
from typing import Union
22
22
23
23
# pinecone integration
24
- import pinecone
25
24
from langchain .cache import InMemoryCache
26
25
from langchain .chat_models import ChatOpenAI
27
26
28
27
# embedding
29
- from langchain .embeddings import OpenAIEmbeddings
30
28
from langchain .globals import set_llm_cache
31
29
32
30
# prompting and chat
36
34
# hybrid search capability
37
35
from langchain .retrievers import PineconeHybridSearchRetriever
38
36
from langchain .schema import BaseMessage , HumanMessage , SystemMessage
39
- from langchain .vectorstores .pinecone import Pinecone
40
37
from pinecone_text .sparse import BM25Encoder
41
38
42
39
# this project
43
40
from models .const import Config , Credentials
44
- from models .pinecone import PineConeIndex , TextSplitter
41
+ from models .pinecone import PineConeIndex
45
42
46
43
47
44
###############################################################################
@@ -54,16 +51,12 @@ class HybridSearchRetriever:
54
51
"""Hybrid Search Retriever"""
55
52
56
53
_chat : ChatOpenAI = None
57
- _openai_embeddings : OpenAIEmbeddings = None
58
- _vector_store : Pinecone = None
59
- _text_splitter : TextSplitter = None
60
54
_b25_encoder : BM25Encoder = None
61
55
_pinecone : PineConeIndex = None
62
56
_retriever : PineconeHybridSearchRetriever = None
63
57
64
58
def __init__ (self ):
65
59
"""Constructor"""
66
- pinecone .init (api_key = Credentials .PINECONE_API_KEY , environment = Config .PINECONE_ENVIRONMENT )
67
60
set_llm_cache (InMemoryCache ())
68
61
69
62
@property
@@ -88,34 +81,6 @@ def chat(self) -> ChatOpenAI:
88
81
)
89
82
return self ._chat
90
83
91
- # embeddings
92
- @property
93
- def openai_embeddings (self ) -> OpenAIEmbeddings :
94
- """OpenAIEmbeddings lazy read-only property."""
95
- if self ._openai_embeddings is None :
96
- self ._openai_embeddings = OpenAIEmbeddings (
97
- api_key = Credentials .OPENAI_API_KEY , organization = Credentials .OPENAI_API_ORGANIZATION
98
- )
99
- return self ._openai_embeddings
100
-
101
- @property
102
- def vector_store (self ) -> Pinecone :
103
- """Pinecone lazy read-only property."""
104
- if self ._vector_store is None :
105
- self ._vector_store = Pinecone (
106
- index = self .pinecone .index ,
107
- embedding = self .openai_embeddings ,
108
- text_key = Config .PINECONE_VECTORSTORE_TEXT_KEY ,
109
- )
110
- return self ._vector_store
111
-
112
- @property
113
- def text_splitter (self ) -> TextSplitter :
114
- """TextSplitter lazy read-only property."""
115
- if self ._text_splitter is None :
116
- self ._text_splitter = TextSplitter ()
117
- return self ._text_splitter
118
-
119
84
@property
120
85
def bm25_encoder (self ) -> BM25Encoder :
121
86
"""BM25Encoder lazy read-only property."""
@@ -128,7 +93,7 @@ def retriever(self) -> PineconeHybridSearchRetriever:
128
93
"""PineconeHybridSearchRetriever lazy read-only property."""
129
94
if self ._retriever is None :
130
95
self ._retriever = PineconeHybridSearchRetriever (
131
- embeddings = self .openai_embeddings , sparse_encoder = self .bm25_encoder , index = self .pinecone .index
96
+ embeddings = self .pinecone . openai_embeddings , sparse_encoder = self .bm25_encoder , index = self .pinecone .index
132
97
)
133
98
return self ._retriever
134
99
0 commit comments