핵심 개념
Casibase 사용자는 최소한 4가지 핵심 개념에 익숙해야 합니다: Provider(제공자), Storage(스토리지), Chat(채팅) 및 Vector(벡터).
제공자(Providers)
제공자는 Casibase의 핵심 기둥으로, 기본 서비스를 제공하고 외부 시스템과 통합됩니다. Provider 클래스의 정의는 다음과 같습니다:
type Provider struct {
    Owner       string `xorm:"varchar(100) notnull pk" json:"owner"`
    Name        string `xorm:"varchar(100) notnull pk" json:"name"`
    CreatedTime string `xorm:"varchar(100)" json:"createdTime"`
    DisplayName  string `xorm:"varchar(100)" json:"displayName"`
    Category     string `xorm:"varchar(100)" json:"category"`
    Type         string `xorm:"varchar(100)" json:"type"`
    ClientId     string `xorm:"varchar(100)" json:"clientId"`
    ClientSecret string `xorm:"varchar(2000)" json:"clientSecret"`
    ProviderUrl  string `xorm:"varchar(200)" json:"providerUrl"`
}
Casibase에는 두 가지 주요 유형의 제공자가 있습니다:
- 스토리지 제공자(Storage Providers). 스토리지 제공자는 Casibase에서 데이터 저장 및 검색을 담당합니다. 다음을 포함한 여러 스토리지 옵션을 지원합니다: - 아마존 웹 서비스
- 애저
- 로컬 파일 시스템
 
- AI 제공자(AI Providers). AI 제공자는 Casibase에서 AI 관련 작업 및 서비스를 처리합니다. 다음을 포함한 다양한 AI 모델 및 기술을 지원합니다: - 오픈에이아이
- 챗GLM
- 인턴LM
 
벡터(Vectors)
Casibase의 벡터는 다양한 유형의 데이터에 대한 숫자 표현을 나타냅니다. 이러한 벡터는 정보의 효율적인 처리와 분석을 가능하게 합니다. 사용 가능한 벡터 유형에는 다음이 포함됩니다:
- 텍스트 벡터
- 이미지 벡터
- ... (기타 벡터 유형)
Vector 클래스의 정의는 다음과 같습니다:
type Vector struct {
    Owner       string    `xorm:"varchar(100) notnull pk" json:"owner"`
    Name        string    `xorm:"varchar(100) notnull pk" json:"name"`
    CreatedTime string    `xorm:"varchar(100)" json:"createdTime"`
    DisplayName string    `xorm:"varchar(100)" json:"displayName"`
    Store       string    `xorm:"varchar(100)" json:"store"`
    File        string    `xorm:"varchar(100)" json:"file"`
    Text        string    `xorm:"mediumtext" json:"text"`
    Data        []float64 `xorm:"mediumtext" json:"data"`
}
채팅(Chats)
채팅은 Casibase에서 사용자와 AI 모델 간의 상호작용 커뮤니케이션의 핵심입니다. 세 가지 기본 구성 요소로 이루어져 있습니다:
- 질문(Question): 정보나 도움을 구하는 사용자의 입력 또는 쿼리.
- 쿼리 프롬프트(Query Prompt): AI 모델 처리를 위해 준비된 사용자 질문의 형식화된 버전.
- 답변(Answer): 사용자 질문에 대한 AI 생성 응답으로, 관련 정보나 솔루션을 제공합니다.
Chat 클래스의 정의는 다음과 같습니다:
type Chat struct {
    Owner        string   `xorm:"varchar(100) notnull pk" json:"owner"`
    Name         string   `xorm:"varchar(100) notnull pk" json:"name"`
    CreatedTime  string   `xorm:"varchar(100)" json:"createdTime"`
    UpdatedTime  string   `xorm:"varchar(100)" json:"updatedTime"`
    DisplayName  string   `xorm:"varchar(100)" json:"displayName"`
    Category     string   `xorm:"varchar(100)" json:"category"`
    Type         string   `xorm:"varchar(100)" json:"type"`
    User1        string   `xorm:"varchar(100)" json:"user1"`
    User2        string   `xorm:"varchar(100)" json:"user2"`
    Users        []string `xorm:"varchar(100)" json:"users"`
    MessageCount int      `json:"messageCount"`
}
임베딩(Embedding)
임베딩은 텍스트 및 이미지와 같은 다양한 유형의 데이터를 밀집된 벡터 표현으로 변환하는 과정입니다. 이 단계는 Casibase에서 효율적인 데이터 처리 및 분석에 중요합니다.
- 임베딩을 통해 채팅의 질문과 스토리지의 지식 파일이 다음 지식 검색에 사용될 벡터로 변환됩니다. 
- Casibase의 기본 임베딩 방법은 OpenAI에서 제공하며 분당 최대 세 번 호출할 수 있습니다. 임베딩 및 추가 처리를 용이하게 하기 위해 지식 파일 간의 결합을 최소화하는 것이 좋습니다.